我正在尝试通过 Python 和子进程将 .sql 转储从磁盘导入 MySQL。即相当于
mysql -u user -ppassword db < dump.sql
我的 Python 代码看起来像这样(但我尝试了很多替代方法 :)):
proc = subprocess.Popen(
("mysql -u %s -p%s database" % (MYSQL_USER, MYSQL_PASSWORD)).split(),
stdin=subprocess.PIPE,
stdout=subprocess.PIPE,
shell=False)
out, err = proc.communicate('source /tmp/dump.sql')
应用程序成功完成,但没有导入 MySQL 的行。我也尝试过dump.sql
这样的管道:
proc = subprocess.Popen(
("mysql -u %s -p%s database < /tmp/dump.sql" % (MYSQL_USER, MYSQL_PASSWORD)).split(),
stdin=subprocess.PIPE,
stdout=subprocess.PIPE,
shell=False)
out, err = proc.communicate()
如果重要的话,当我设置时shell=True
我得到ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)
)
谁能指出我正确的方向?