繁体   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