【发布时间】:2012-04-30 17:28:06
【问题描述】:
一年多以前有人问过这个问题:Execute .sql files that are used to run in SQL Management Studio in python。
我正在用 python 编写一个脚本,该脚本连接到 SQL 服务器,并基于大型(几 GB).sql 文件中的 SQL 命令创建和填充数据库。
看起来 SQLCMD 需要下载并安装 SQL Server Express。是否有其他方法可以从 python 执行 .sql 文件,而无需使用我的脚本的每个人都下载和安装 SQL Server? pyodbc 有这个能力吗?
编辑:
这是另一个类似的问题: execute *.sql file with python MySQLdb
同样,解决方案是从命令(在本例中为 mysql.exe)调用实用程序,并将文件列为参数。
在我看来,应该有一种方法可以使用 Python 的 DB API 库之一,但我还没有找到它,所以我正在寻找可以使用的 *.exe,如 SQLCMD 或 MYSQL从命令行运行文件。
附:如果我看不正确,请随时纠正我。也许下面的代码和从命令行运行一样高效:
for line in open('query.sql','r'):
cursor.execute(line)
【问题讨论】:
-
对不起,什么?您正在尝试创建没有安装服务器的数据库???否则 sqlcmd 应该与服务器一起安装(尽管它可能不在您的 PATH 上)。 - - - 当然你也可以使用pyodbc或pymssql连接数据库并执行文件中的命令。
-
没有。服务器已经安装好了。我只需要连接到服务器并从没有安装 SQL Server 的计算机远程执行 SQL 命令。
-
我知道我可以使用 pyodbc 读取文件并将其内容作为字符串执行,但是从文件中读取脚本并进入内存而不是让 SQL Server 直接从文件中读取似乎有点过分。
-
您如何将文件发送到服务器以“直接读取”?如果它在远程计算机上,服务器将无法直接访问它。而且您不需要一次读取整个文件,一次只需一个命令...
-
SQLCMD 具有连接到远程服务器的连接参数,这不是问题(如果是,我仍然可以远程建立连接并引用存储在服务器上的文件——文件位置是不是我担心的)。我认为我上面的编辑应该有助于澄清我在寻找什么。
标签: python sql sql-server pyodbc python-db-api