我正在尝试调用从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
Python DB API2.0指定默认情况下,应在禁用自动提交的情况下打开连接。但是,许多数据库要求DDL语句 不在 事务内执行。尝试在禁用自动提交的情况下执行DDL语句可能会导致错误或意外结果。
因此,更安全的是确保在启用了自动提交的连接上执行DDL语句。这可以通过autocommit=True在打开连接时进行设置来实现…
autocommit=True
cnxn = pyodbc.connect(connection_string, autocommit=True)
…或通过启用autocommit现有连接…
autocommit
cnxn = pyodbc.connect(connection_string) # ... cnxn.autocommit = True