python os.execvp() 尝试显示 mysql 表给出 1049 错误 - 未知数据库错误
我有一个关于 MySQL 和 Python 的问题。
该命令在 shell 上有效,但在我使用 os.execvp 时无效。
$./mysql -D test -e "show tables" +----------------+ | Tables_in_test | +----------------+ | sample | +----------------+
python 中相应的代码片段将是
def execute():
args = []
args.extend(sys.argv[1:])
args.extend([MYSQL, '-D test -e "show tables"'])
print args
os.execvp(args[0], args)
child_pid = os.fork()
if child_pid == 0:
os.execvp(args[0], args)
else:
os.wait()
其输出是:
[./mysql', '-D test -e "show tables"'] ERROR 1049 (42000): Unknown database ' test -e "show tables"'
我不确定这是否是 Python 语法的问题。此外,相同的命令还可以与 os.system 调用一起使用。
os.system(MYSQL + ' -D test -e "show tables"')
请让我知道如何让它发挥作用。
I have a question related to MySQL and Python.
This command works on the shell, but not when I use os.execvp
.
$./mysql -D test -e "show tables" +----------------+ | Tables_in_test | +----------------+ | sample | +----------------+
The corresponding piece of code in python would be
def execute():
args = []
args.extend(sys.argv[1:])
args.extend([MYSQL, '-D test -e "show tables"'])
print args
os.execvp(args[0], args)
child_pid = os.fork()
if child_pid == 0:
os.execvp(args[0], args)
else:
os.wait()
The output of this is:
[./mysql', '-D test -e "show tables"'] ERROR 1049 (42000): Unknown database ' test -e "show tables"'
I am not sure if this is a problem with the Python syntax or not. Also, the same command works with an os.system
call.
os.system(MYSQL + ' -D test -e "show tables"')
Please let me know how to get this working.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
每个单独的参数都需要是参数列表中的单独元素。
Each of your separate parameters needs to be a separate element in the list of parameters.
尝试:
您可能还对
感兴趣subprocess
模块,如果您不知道的话:或者只是
subp.call([MYSQL, ...])
并且您不必 fork+exec你自己,退出状态就是返回值IIRC。Try:
You might also be interested in the
subprocess
module if you weren't aware of it:Or just
subp.call([MYSQL, ...])
and you don't have to fork+exec yourself, exit status is the return value IIRC.