gpt4 book ai didi

python - 在不安装模块的情况下从 Python 2.4 运行 MySQL 查询 (MySQLdb)

转载 作者:行者123 更新时间:2023-11-29 12:40:19 24 4
gpt4 key购买 nike

我需要从 Python 2.4 运行 MySQL 查询,但无法下载/安装任何 Python 模块。

我无法下载的原因是因为该脚本要在服务器(RedHat)上运行,而我们的客户不允许我们下载和安装任何内容。

我一直在尝试使用subprocess,但我使用的查询给出了语法错误

如果我从查询浏览器运行查询,该查询可以在 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

创建此输出文件后,我可以停止使用子进程并返回到常规文件处理。

最佳答案

您的查询是这样的:'"SELECT cu, control_name FROM PresetProfile WHERE NOT cu='' AND NOT control_name='' INTO OUTFILE '/directory/for/output.file' FIELDS TERMINATED BY ':' LINES由 '\n';"' 终止

请注意,字符串中有 ' - 您需要对它们进行转义或使用三引号。

'"从 PresetProfile 中选择 cu, control_name,其中不是 cu=\'\' 并且不是 control_name=\'\' INTO OUTFILE\'/directory/for/output.file\' 字段以\' 结尾:\' 行终止于\'\\n\';"'

此外,您可能想要删除 shell=True 位——如果您只处理 Python,那么管理转义就已经足够困难了。一旦您需要再次取消转义以获取外壳,事情就会变得更加困惑。

关于python - 在不安装模块的情况下从 Python 2.4 运行 MySQL 查询 (MySQLdb),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26219133/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com