subprocess.call未按预期运行

问题描述 投票:0回答:1

我有一个简单的脚本,从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模块。

python subprocess
1个回答
1
投票

我的问题是sql脚本和python脚本的目录,即使我指定了sql脚本的完整路径。他们在不同的光盘上,当我使用non-zero exit status 1时,我一直在接受subprocess.call_check()。我把两个脚本放在同一个位置,问题就消失了。

© www.soinside.com 2019 - 2024. All rights reserved.