跟进:从python执行.sql文件

Nea*_*uis 7 python sql sql-server pyodbc python-db-api

一年多以前,有人问过这个问题:执行.sql文件,用于在python中的SQL Management Studio中运行.

我正在python中编写一个连接到SQL服务器的脚本,并根据大(几GB).sql文件中的SQL命令创建和填充数据库.

看起来SQLCMD需要下载并安装SQL Server Express.有没有其他方法从python执行.sql文件,而不需要使用我的脚本的每个人下载和安装SQL Server?pyodbc有这种能力吗?

编辑:

这是另一个类似的问题: 使用python MySQLdb执行*.sql文件

在这里,解决方案是从命令(在本例中为mysql.exe)调用实用程序,并将该文件作为参数列出.

在我看来应该有一种方法来使用Python的DB API库之一,但我还没有找到它所以我正在寻找像我可以用来运行文件的SQLCMD或MYSQL这样的*.exe从命令行.

PS如果我没有正确地看这个,请随时纠正我.也许下面的代码与从命令行运行一样有效:

for line in open('query.sql','r'):
    cursor.execute(line)
Run Code Online (Sandbox Code Playgroud)

Nea*_*uis 13

我发现在python中读取文件并使用pyodbc批量执行比在外部使用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()
Run Code Online (Sandbox Code Playgroud)