我正在用python编写脚本,该脚本连接到SQL Server,并根据SQL命令在大(数GB)的.sql文件中创建和填充数据库。
看起来SQLCMD需要下载并安装SQL ServerExpress。还有其他方法可以从python执行.sql文件,而不需要每个使用我的脚本的人都下载并安装SQL Server吗?pyodbc是否具有此功能?
编辑:
同样,这里的解决方案是从命令(在本例中为mysql.exe)中调用实用程序,并以文件作为参数列出。
在我看来,应该有一种使用Python的DB API库执行此操作的方法,但是我没有找到它,因此我正在寻找可用于运行该文件的* .exe,例如SQLCMD或MYSQL。从命令行。
附言:如果我没有正确看待的话,请随时纠正我。也许下面的代码和从命令行运行一样高效:
for line in open('query.sql','r'): cursor.execute(line)
我发现使用pyodbc在python中读取文件并批量执行实际上比在外部使用SQLCMD实用程序要快(而且我不必在运行脚本的每台计算机上都安装SQLCMD!)。
这是我使用的代码(因为pyodbc似乎没有executescript()方法):
executescript()
with open(scriptPath, 'r') as inp: for line in inp: if line == 'GO\n': c.execute(sqlQuery) sqlQuery = '' elif 'PRINT' in line: disp = line.split("'")[1] print(disp, '\r') else: sqlQuery = sqlQuery + line inp.close()