【问题标题】:Execute mysql commands in linux terminal using Python使用 Python 在 linux 终端中执行 mysql 命令
【发布时间】:2021-06-11 12:29:10
【问题描述】:

我想自动化数据库的设置,我想通过使用 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并通过connectiin发出语句?
  • 不确定我理解你的意思。我该怎么做。
  • 没有正确答案 b/c 这不是您使用任何数据库的方式。

标签: python mysql linux terminal command


【解决方案1】:

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

【讨论】:

  • 我不想连接到现有的数据库,我想创建一个新的数据库,并创建用户。
  • 你可以生成一个.sql文件然后?
猜你喜欢
  • 1970-01-01
  • 2014-07-03
  • 1970-01-01
  • 2014-08-06
  • 2015-08-16
  • 2019-08-04
  • 2011-04-13
  • 2011-05-09
  • 2018-12-28
相关资源
最近更新 更多