小编典典

跟进:从python执行.sql文件

sql

我正在用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)

阅读 252

收藏
2021-03-23

共1个答案

小编典典

我发现使用pyodbc在python中读取文件并批量执行实际上比在外部使用SQLCMD实用程序要快(而且我不必在运行脚本的每台计算机上都安装SQLCMD!)。

这是我使用的代码(因为pyodbc似乎没有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()
2021-03-23