Python / SubProcess / SqlCmd /使用-v开关传递变量

时间:2014-01-29 23:00:33

标签: python sql-server sqlcmd

尝试使用-v开关将变量传递给SQL脚本(Python)非常困难,但似乎无法使语法正确。我收到以下错误:

(注意它如何从参数中删除C:并附加一个反斜杠)

[stdout] Sqlcmd:':\ Users \ Public \ MyProj \ Tests \ WorkingFolder \ Database \“':参数无效。输入' - ?'寻求帮助。

在服务器端,这是我的语法:

FILENAME = N'$(LOCATION)\MyDatabase.mdf'

以下是我的代码

        _varText = 'LOCATION="C:\\Users\\Public\\MyProj\\Tests\WorkingFolder\\Database"'       
        command_process = SubP.Popen(['sqlcmd','-b', '-E', '-S', _server, '-v', _varText , '-d', _database, '-i', filepath],
                                stdin = SubP.PIPE, stdout = SubP.PIPE, stderr = SubP.STDOUT, shell = True) 

1 个答案:

答案 0 :(得分:0)

你可以尝试

_varText = 'LOCATION=\"C:\\Users\\Public\\MyProj\\Tests\WorkingFolder\\Database\"'

它基于本节中的建议:http://docs.python.org/2/library/subprocess.html#converting-an-argument-sequence-to-a-string-on-windows