[英]Python execute sql query using sqlcmd
嗨,我想使用sqlcmd執行查詢,所以我要使用subprocess.call()調用它。 該過程有時會起作用,但循環中卻無法起作用。 它僅執行最后一個參數。 請在下面幫助我正在嘗試的示例代碼-
import subprocess
host = 'hostname'
db = 'SQLTest'
sqlcmd = "C:\Program Files\Microsoft SQL Server\100\Tools\Binn\SQLCMD.EXE"
query = "INSERT INTO [dbo].[Test](type,ident,lat,long,y_proj,x_proj,new_seg,display,color,altitude,depth,temp,time,model,filename,ltime) VALUES ('TRACK','ACTIVE LOG','40.79015493','-77.85914183','4627311.94501541','1779470.5827101','False','False','255','351.979858398438','0','0','2008/06/11-14:33:33','eTrex Venture','','2008/06/11 09:33:33')"
for x in range (0,5):
subprocess.call([sqlcmd,'-S' ,host, '-d', db, '-Q', query])
還是有其他方法。 我什至嘗試了pymysql模塊。 但它顯示身份驗證錯誤。
這是一個非常有創意的解決方案!
當您說“循環中不起作用”時,您能告訴我們發生了什么嗎? 是否有錯誤消息? 它可以運行,但表中沒有插入數據嗎? 您能否使它在循環外正常工作?
我注意到的第一件事是
sqlcmd = "c:\program files\...."
您可能希望通過在引號前面加上“ r”來使它成為原始字符串,如下所示:
sqlcmd = r"c:\program files\...."
這樣可以防止Python嘗試將反斜杠解釋為特殊字符。
看來您正在嘗試與SQL Server通訊,因此pymysql不會提供幫助(這是與MySQL Server通訊)。 我建議研究pyodbc或pymssql作為替代方案。
我得到了錯誤。 這與我傳遞的查詢有關。 查詢正在從文本文件中讀取。 因此除最后一個查詢外,它們中都有空格。 對於單項測試,我使用的是最后一個查詢。 修復后,它起作用了。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.