Python使用sqlcmd执行sql查询

2024-10-03 13:24:24 发布

您现在位置:Python中文网/ 问答频道 /正文

嗨,我想用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模块。但它显示身份验证错误。在


Tags: 代码importfalsehost示例db参数过程
2条回答

这是一个非常有创意的解决方案!在

当你说“在回路中它不工作”时,你能告诉我们发生了什么吗?有错误信息吗?它是否运行,但没有在表中插入数据?你能让它在环路外正常工作吗?在

我注意到的第一件事是

sqlcmd = "c:\program files\...."

你可能想把它变成一个原始字符串,在引号前面加上一个“r”,如下所示:

^{2}$

这将阻止Python尝试将反斜杠解释为特殊字符。在

看起来您正在尝试与SQL服务器对话,所以pymysql无法提供帮助(这是用于与MySQL服务器对话)。我建议使用pyodbc或pymssql作为替代方案。在

我搞错了。这与我正在传递的查询有关。查询正在读取文本文件。所以除了最后一个查询外,它还有空格。对于单个测试,我使用最后一个查询。在修复后,它起作用了。在

相关问题 更多 >