微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用pyodbc时,“多语句事务中不允许使用CREATE…语句”

如何解决使用pyodbc时,“多语句事务中不允许使用CREATE…语句”

建立连接时,pyodbc的认设置autocommit=False符合Python的DB- API规范。因此,当执行第一个sql语句时,ODBC将开始有效的数据库事务,直到Python代码对连接执行a.commit()或a为止.rollback()

sql Server不允许CREATE DATABASE在这样的事务中执行,因此我们需要autocommit在发出此类语句之前以模式进行连接。打开连接时可以完成…

conn = pyodbc.connect(conn_str, autocommit=True)

…或者autocommit如果已经建立连接,则切换到模式:

conn = pyodbc.connect(conn_str)  # autocommit=False by default
# ...
conn.autocommit = True
conn.execute("CREATE DATABASE MyNewDatabase")

解决方法

我正在尝试使用pyodbc创建一个SQL Server数据库。

import pyodbc 
server = 'AMR112\NAMED1' 
database = 'msdb' 
username = '' 
password = 'mypassword' 
abcd='yes' 
ghi='False' 
#driver = '{/usr/local/lib/libtdsodbc.so}' #for linux of windows 
driver= '{ODBC Driver 13 for SQL Server}' 
cnxn = pyodbc.connect('DRIVER='+driver+';PORT=1433;SERVER='+server+??';PORT=1443;DATABASE??='+database+';UID='+??username+';PWD='+ password+';trusted_connection='+ abcd+'; autocommit='+ ghi) cursor = cnxn.cursor() 
cursor.execute("create database dbafgh") 
row = cursor.fetchone() 
if row: 
    print row 
cursor.close()

失败并显示此错误

多语句事务中不允许使用CREATE DATABASE语句

它失败,因为该.execute方法启动了事务,CREATE DATABASE并且无法在事务内运行。

那么还有其他方法可以CREATE DATABASE使用python执行命令吗?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。