嗨,我想用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模块。但它显示身份验证错误。在
这是一个非常有创意的解决方案!在
当你说“在回路中它不工作”时,你能告诉我们发生了什么吗?有错误信息吗?它是否运行,但没有在表中插入数据?你能让它在环路外正常工作吗?在
我注意到的第一件事是
你可能想把它变成一个原始字符串,在引号前面加上一个“r”,如下所示:
^{2}$这将阻止Python尝试将反斜杠解释为特殊字符。在
看起来您正在尝试与SQL服务器对话,所以pymysql无法提供帮助(这是用于与MySQL服务器对话)。我建议使用pyodbc或pymssql作为替代方案。在
我搞错了。这与我正在传递的查询有关。查询正在读取文本文件。所以除了最后一个查询外,它还有空格。对于单个测试,我使用最后一个查询。在修复后,它起作用了。在
相关问题 更多 >
编程相关推荐