python 怎样使外部.sql脚本执行

现有很多SQL Server脚本需要执行,想要写一个python程序自动化运行这些脚本。不知道怎样在python中使外部.sql脚本执行。求指点,最好能有一小段详细代码。

直接调命令行工具导入啊。 否则就麻烦 了。需要解析主要的语句,比如create table和insert。最怕碰到复杂的引号,嵌套之类的。经常搞不定啊。

代码挺复杂的。追问

from subprocess import call
call(["sqlcmd.exe","-S localhost -U sa -P password -i:'C:\test.sql'"])
上面语句运行返回值是1,但经过测试,它只是运行并没有起到实际的作用,这个call里面的参数没有被识别,也就是根本没有调用test.sql脚本。能给我一个可以运行的例子吗?或者列出修改上面的语句的代码。

追答

我还真没有用过call这个函数。我一直用os.system。

比如

import os
os.system("sqlcmd.exe -S localhost -U sa -P password -I:'C:\test.sql'")

传递参数,有时候会有些BUG。以前似乎用popen的时候发现了这个问题。

所以我通常能用os.system解决的不用popen


另外call函数中shell=True这个参数加上去,通常会效果好些。

追问

我的环境安装了SQL 2008R2,test.sql如果运行了数据库中就会新插一条记录。按照你给的os.sys(...)后,感觉还是没调用test.sql啊,怎么办?

追答

那你手工命令运行一下看看呢?
你的python与test.sql是同一个目录吗?

追问

我手工运行命令是好使的,证明我的环境是可以直接运行"sqlcmd.exe -S localhost -U sa -P password -I'C:\test.sql'"的,python与test.sql在同一个目录下。都要被这个小问题折磨疯了,在你那运行os.system(...)可以成功调用吗?

追答

手工是好使的。那你把手工命令放在一个xxx.bat文件里。再用 python的os.system调用这个xxx.bat文件就可以了。 复杂问题可以简化啊。 不要解决的很优美。只要能搞定就可以了。

温馨提示:答案为网友推荐,仅供参考
相似回答