首页 > 解决方案 > 使用 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")

标签: pythonmysqllinuxterminalcommand

解决方案


我认为不可能做到这一点。如果您想使用 Python 脚本与 MySQL 数据库交互,则需要使用MySQLdb 之类的 API 直接连接到您的数据库。(我可能是错的,但你想要做的方式可能会导致安全问题)


推荐阅读