【问题标题】:python executes mysql script file and passes parameterspython执行mysql脚本文件并传递参数
【发布时间】:2021-10-18 15:56:29
【问题描述】:

我知道如何在python中执行mysql脚本文件,但是尝试传递参数失败了。

带有 mysql -e 的 Python 代码

filename = 'test.sql'
cmd = ["mysql", "-h", 'local', "-u", 'user', "-p",'123' ,'-e','set @x=333']
process = subprocess.Popen(cmd, stdin=subprocess.PIPE, stdout=subprocess.PIPE)
output,err=process.communicate(str.encode("source "+filename))

test.sql

insert into dm.test(a) values(@x);

需要帮助!

【问题讨论】:

  • 你这里并没有完全使用python。为什么不能创建连接并执行 SQL?
  • 为什么在这里使用source 而不是让process.stdin 直接指向test.sql 的文件句柄?
  • @mad_ 上面只是一个例子,确实,test.sql有几百行,很复杂,我不能一步一步执行。

标签: python mysql


【解决方案1】:

我会自己试一试,正确的方法是这样的:

filename = '/bigdata/test.sql'
cmd = ["mysql", "-h", '', "-u", '', "-p",'']
process = subprocess.Popen(cmd, stdin=subprocess.PIPE, stdout=subprocess.PIPE)
outs,errs=process.communicate(str.encode("set @x=1;source "+filename+";"))

文件名的路径sep必须是unix风格的'/',在windows上运行时改为这种风格。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-09-28
    • 2021-04-17
    • 1970-01-01
    • 2011-08-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多