python - 使用 Python 在 linux 终端中执行 mysql 命令
问题描述
我想自动化数据库的设置,我想通过使用 python 脚本在 linux 终端中执行一些命令来实现。
但是在连接到 mysql 数据库后,我看不到任何在终端中执行命令的方式。
您可以在下面看到脚本的一部分:
from time import sleep
from os import system
print("Setting up the database...\n")
system("sudo mysql -u root")
sleep(2)
这将启动 mysql,在此之后,我尝试从 python 执行的所有命令都没有执行。
例如,我想运行如下命令:
system("CREATE DATABASE mydatabase;")
system("CREATE USER 'user'@'localhost' IDENTIFIED BY '[PASSWORD]';")
system("GRANT ALL PRIVILEGES ON mydatabase.* TO 'user'@'localhost';")
这可能吗?
编辑 1:@AndHeFallen 建议的潜在解决方案:
在 python 中,我创建了一个名为 db.sql 的 sql 文件,然后在终端中运行它:
with open("db.sql","w") as db:
db.write("CREATE DATABASE mydatabase;\n")
db.write("CREATE USER 'user'@'localhost' IDENTIFIED BY '[PASSWORD]';\n")
db.write("GRANT ALL PRIVILEGES ON mydatabase.* TO 'user'@'localhost';\n")
system("sudo mysql -u root < db.sql")
解决方案
我认为不可能做到这一点。如果您想使用 Python 脚本与 MySQL 数据库交互,则需要使用MySQLdb 之类的 API 直接连接到您的数据库。(我可能是错的,但你想要做的方式可能会导致安全问题)
推荐阅读
- c++ - 将键、值转换为 JSON
- python - FileChooser kivy中图像的python预览
- opencv - 我应该标准化opencv findHomography生成的单应性吗?
- logstash - 如何在 Logstash 中解析 Auditbeat“event.type”?
- java-8 - 如何在哈希映射对象的流内调用函数,并根据流内调用的方法的输出累加总和
- amazon-web-services - 更新 lambda 时 S3 lambda 通知会发生什么情况?
- ios - 如何在 Swift 5 中将 UIView 设置为半圆形
- html - 如何将 div 完全包裹在子 div 周围以避免溢出?
- javascript - 如何在 Vue JS 中添加 window.addEventListener 和删除 window.removeEventListener
- javascript - 如何提高 videojs-record 中 exportImage() 函数截取的屏幕截图质量