我有一个简单的脚本,从python
调用sql脚本subprocess.call([
'sqlcmd',
'-S', 'server_name',
'-d', 'db name'
'-i', r'path to the script + script name'
])
python脚本运行没有错误,但从不调用sql脚本。我可以通过命令行sqlcmd "path to the script + script name"
运行sql脚本,它可以正常工作。
我可以使用subprocess
模块调用存储过程,没有问题,
subprocess.Popen([
'sqlcmd',
'-S', 'server_name',
'-d', 'db name'
'-Q', 'exec stored procedure'
])
但是调用单独的脚本不会产生任何结果。我尝试过包含shell = True
或使用Popen
,但没有任何变化。
为了进行更多测试,我创建了一个只返回当前数据库名称的测试脚本。我通过命令行运行它没有任何问题
sqlcmd -S server_name -d db_name -i "directory/test1.sql"
,获得预期结果。我尝试使用subprocess
模块运行它并再次解决了我的问题,我已尝试subprocess.call_check
并收到错误,指出exit status 1
。因此脚本使用命令行运行,但不与subprocess
模块一起运行。
答案 0 :(得分:1)
我的问题是sql脚本和python脚本的目录,即使我指定了sql脚本的完整路径。他们在不同的光盘上,当我使用non-zero exit status 1
时,我一直在subprocess.call_check()
。我已将两个脚本放在同一位置,问题就消失了。