【发布时间】:2014-05-22 10:24:19
【问题描述】:
我必须连接到一个 sybase 数据库并使用 python 脚本运行一个简单的选择查询
在我的服务器上,isql 命令只能从 sybase bin 目录运行,因此我必须在触发查询之前 cd 到该目录。
--------------已编辑---------------- -------------
到目前为止,我能够做到这一点:-
#!/usr/bin/python
import subprocess
path = "path/to/sybase/bin"
os.chdir(path)
arguments = ['./isql',"-S server_name", "-U user", "-P password", "-D database","""<<EOF
SELECT * FROM sometable
go
EOF"""]
ps = subprocess.Popen(arguments)
out = ps.communicate()
print out
这些错误超出了我的理解能力:(
Traceback (most recent call last):
File "./test_db.py", line 8, in ?
ps = subprocess.Popen(arguments)
File "/usr/lib64/python2.4/subprocess.py", line 542, in __init__
errread, errwrite)
File "/usr/lib64/python2.4/subprocess.py", line 975, in _execute_child
raise child_exception
OSError: [Errno 2] No such file or directory
我可以在我的 unix 终端上使用 isql 命令在我的 python 脚本之外执行此操作
如何在 python 子进程模块中使用 isql?
【问题讨论】:
-
使用导入操作系统; os.chdir(path) 改变路径。
-
从字符串内部删除括号。事实上,您可以完全删除方括号。
-
那没用,同样的错误
-
似乎 isql 可能不存在于该文件夹中。检查我的答案更新。
标签: python subprocess