2014-01-29 35 views
1

嘗試真的很難使用-v開關將變量傳遞給SQL腳本(Python),但似乎無法獲得正確的語法。我收到以下錯誤:Python/SupProcess/SqlCmd /使用-v開關來傳遞變量

(注意它是如何失去了C:從參數和附加關閉反斜線)

[標準輸出] SQLCMD:「:\用戶\公用\的Myproj \測試\ WorkingFolder \數據庫\「':無效參數。輸入' - ?'對於

在服務器端的幫助,這是我的語法:

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) 
+0

聖克拉波拉 - 我終於必須做一個工作(對於任何人後來閱讀)。在python結尾,我用一個標記替換了冒號(我選擇了「{col}」,然後在T-SQL結尾做了反向替換。它並不漂亮,但它讓我有了這個問題。發送一個冒號 –

回答

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

+0

非常感謝你 - 但是這並沒有解決它......我仍然得到同樣的錯誤我昨天學到的一件事就是問題出現在「:」。我使用冒號傳遞一個變量,它將丟棄前導文本 –

+0

...另外,我不認爲您想要在您的示例中使用雙引號,因爲它在單引號內。 –