子流程调用没有按预期运行

2024-04-26 00:49:27 发布

您现在位置:Python中文网/ 问答频道 /正文

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


Tags: 模块thetopath命令行name脚本db
1条回答
网友
1楼 · 发布于 2024-04-26 00:49:27

我的问题是sql脚本和python脚本的目录,尽管我指定了sql脚本的完整路径。它们分别放在不同的光盘上,当我使用subprocess.call_check()时,我会一直得到non-zero exit status 1。我把两个脚本放在同一个位置,问题就消失了。你知道吗

相关问题 更多 >