加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

python – 使用子进程导入SQL转储

发布时间:2020-12-20 12:40:23 所属栏目:Python 来源:网络整理
导读:我正在尝试通过 Python和子进程将.sql转储从磁盘导入MySQL.即相当于 mysql -u user -ppassword db dump.sql 我的Python代码看起来像这样(但我尝试了很多替代方案:)): proc = subprocess.Popen( ("mysql -u %s -p%s database" % (MYSQL_USER,MYSQL_PASSWORD)
我正在尝试通过 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,err = proc.communicate()

如果重要,当我设置shell = True时,我得到ERROR 1045(28000):用户’root’@’localhost’拒绝访问(使用密码:NO))

有谁能指出我正确的方向?

解决方法

您正在使用Popen.communicate()错误.

import subprocess

proc = subprocess.Popen(["mysql","--user=%s" % USER,"--password=%s" % PASS,"database"],stdout=subprocess.PIPE)
out,err = proc.communicate(file("/tmp/dump.sql").read())

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读