簡體   English   中英

Python使用sqlcmd執行sql查詢

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM