无法使用存储过程pyodbc SQL SERVER创建数据库

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了无法使用存储过程pyodbc SQL SERVER创建数据库相关的知识,希望对你有一定的参考价值。

我试图调用从pyodbc创建数据库的存储过程

以下是代码的最小示例

import pyodbc
conn = pyodbc.connect("Driver={SQL Server};Server=SERVERNAME;Trusted_Connection=yes;")
cursor=conn.cursor()
cursor.execute("""
    DECLARE @RC int
    DECLARE @ClientName varchar(255)
    SET @ClientName = 'Test'
    EXECUTE @RC = [DB_NAME].[SCHEMA].[sp_NAME] @ClientName
""")
conn.commit()

理想情况下,代码应在SQL Server实例中创建名为“Test”的数据库。这不会产生任何错误。但是没有创建数据库。

运行

DECLARE @RC int
DECLARE @ClientName varchar(255)
SET @ClientName = 'Test'
EXECUTE @RC = [DB_NAME].[SCHEMA].[sp_NAME] @ClientName

从SSMS似乎创建了数据库。已经提到了几个问题,包括this one

答案

Python DB API 2.0指定默认情况下应在禁用自动提交的情况下打开连接。但是,许多数据库要求不在事务中执行DDL语句。尝试禁用自动提交执行DDL语句可能会导致错误或意外结果。

因此,确保在启用了自动提交的连接上执行DDL语句更安全。这可以通过在打开连接时设置autocommit=True来实现......

cnxn = pyodbc.connect(connection_string, autocommit=True)

...或在现有连接上启用autocommit ...

cnxn = pyodbc.connect(connection_string)
# ...
cnxn.autocommit = True

以上是关于无法使用存储过程pyodbc SQL SERVER创建数据库的主要内容,如果未能解决你的问题,请参考以下文章

PYODBC 截断 SQL Server FOR JSON 查询的响应

PyOdbc 无法连接到 sql server 实例

无法将 pyODBC 与 SQL Server 2008 Express R2 连接

我可以将 pyodbc executemany 与 sql 存储过程一起使用吗?

sqlalchemy 无法连接到 ms sql server

在 AWS E2 ubuntu 实例上连接时,SQL Server 的 ODBC 驱动程序 13 无法在 pyodbc 上打开 lib