我正在尝试通过 KennethReitz 的 Envoy 包运行此命令:
$ sqlite3 foo.db 'select * from sqlite_master'
我已经尝试过这个:
r = envoy.run("sqlite3 foo.db 'select * from sqlite_master'")
sqlite3: Error: too many options: "*"
还有这个:
r = envoy.run(['sqlite3', 'foo.db', 'select * from sqlite_master'])
AttributeError: 'NoneType' object has no attribute 'returncode'
额外的引用和转义似乎没有帮助。有什么建议吗?
仅供引用:这是我现在必须做的:
cmd = "sqlite3 %(database)s 'select * from sqlite_master'" % locals()
os.system(cmd)
请注意,这是一个人为的示例,我想要发出的大多数 UNIX shell 命令不仅仅是可以通过 SQLAlchemy 轻松完成的简单选择。
最佳答案
这在 envoy
中不起作用,因为 envoy 会拆分命令并将它们传递给子进程。即使您尝试使用 subprocess.Popen(command, shell = False) ,您最终也会得到 sqlite3 终端。 subprocess
和 envoy
都无法解决这个问题,如果您可以在 envoy
中提出问题,我会很高兴,因为我正在为此做出贡献,我会思考这个问题。
关于python - 如何在 Envoy 中使用通配符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9106350/