【发布时间】:2014-10-06 15:04:16
【问题描述】:
我需要从 Python 2.4 运行 MySQL 查询,但我无法下载/安装任何 Python 模块。
我无法下载的原因是因为这个脚本要在服务器 (RedHat) 上运行,我们的客户不会让我们下载和安装任何东西。
我一直在尝试使用subprocess,但我使用的查询给了我syntax error。
如果我从查询浏览器运行查询,则该查询在 Python 之外运行,但在子进程命令 [] 中添加引号和逗号会使事情变得有点混乱。
我尝试运行的命令如下:
subprocess.call(['mysql', '-D DB', '--user="user"', '--password="password"', '-e', '"SELECT cu, control_name FROM PresetProfile WHERE NOT cu='' AND NOT control_name='' INTO OUTFILE '/directory/for/output.file' FIELDS TERMINATED BY ':' LINES TERMINATED BY '\n';"', shell=True])
我得到的语法错误指向紧接在: 之前的单引号FIELDS TERMINATED BY 之后。
File "<stdin>", line 1
subprocess.call(['mysql', '-D DB', '--user="user"', '--password="password"', '-e', '"SELECT cu, control_name FROM PresetProfile WHERE NOT cu='' AND NOT control_name='' INTO OUTFILE '/directory/for/output.file' FIELDS TERMINATED BY ':' LINES TERMINATED BY '\n';"', shell=True])
^
SyntaxError: invalid syntax
创建此输出文件后,我可以停止使用子进程并返回到常规文件处理。
【问题讨论】:
-
正如您在问题中看到的(请参阅语法突出显示),存在引用问题
-
我会尝试commands 运行 MySQL 命令
-
你使用 Python 有什么原因吗?一个简单的 bash 脚本会更容易转义。
标签: python mysql syntax-error subprocess