python sql语句不放在python脚本中_Python中执行sql脚本时GO语句出错问题

该博客介绍了如何处理在尝试通过Python的pymssql库执行包含'GO'关键字的SQL脚本时遇到的错误。解决方案是改用os.system结合sqlcmd来执行脚本,详细解释了sqlcmd的参数用法,并提供了示例代码。
摘要由CSDN通过智能技术生成

sql脚本:

--创建链接服务器 (其中db2server是DB2的ip地址或服务器名)

exec sp_addlinkedserver 'srv_lnk', '', 'SQLOLEDB','10.138.60.94'

exec sp_addlinkedsrvlogin 'srv_lnk','false',null,'sa','123456'

Go

--数据导入(表B存在)

--Insert into srv_lnk.sys.Estamp.EstampConfig(field1,field2)

INSERT INTO srv_lnk.[PostLoan].[dbo].[TestReport]

([DBVersion]

,[CodeLines]

,[Duration]

,[LastDate]

,[Summary]

,[Amount]

,[SuccessAmount]

,[FailAmount]

,[BugAmount]

,[Remark])

SELECT

[DBVersion]

,[CodeLines]

,[Duration]

,[LastDate]

,[Summary]

,[Amount]

,[SuccessAmount]

,[FailAmount]

,[BugAmount]

,[Remark]

FROM [PostLoan].[dbo].[TestReport]

--数据导入(表B不存在)

--SELECT value1,value2 into srv_lnk.DB2.dbo.B

--from DB1.dbo.A

--关闭连接

exec sp_dropserver 'srv_lnk','droplogins'

直接利用Python中的pymssql库执行以上脚本的时候,会报错:“Incorrect syntax near 'Go'.DB-Lib error message 20018, severity 15”。这是因为GO不是sql中的关键字。

这时可以利用python中的os.system+sqlcmd执行sql脚本,方法如下:

import os

os.system("sqlcmd -S localhost -U sa -P 123456 -d TRAINING -i \"d:\\sql\\tmp.txt\"")

sqlcmd命令参数说明:

-S:表示数据库服务器地址,如localhost

-U:用户名,如sa

-P: 密码,如123456

-d:数据库名,如TRAINING

-i:文件路径,如文件存放在d:\sql\tmp.txt, 需要写成这样 \"d:\\sql\\tmp.txt\"

路径书写需要注意下。路径用双引号"file_path",外面已经有双引号了,需要转义。因为是在windows系统,路径用反斜杠,也需要转义下。

参考地址:https://my.oschina.net/shong/blog/768394

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值