【问题标题】:How can I create a database using pymssql如何使用 pymssql 创建数据库
【发布时间】:2012-04-12 16:07:46
【问题描述】:

我正在尝试使用 pymssql 创建数据库,但出现此错误。

cur.execute("CREATE DATABASE %s;" % self.getsql('dbname'), conn)

给予

*** OperationalError: (226, 'CREATE DATABASE statement not allowed within multi-
statement transaction.DB-Lib error message 226, severity 16:\\nGeneral SQL Serve
r error: Check messages from the SQL Server\\n')

这是什么意思??

【问题讨论】:

  • 试试cur.execute("create database %s" % (self.getsql('dbname'),), conn),也可以不用getsql调用。
  • 如果您在CREATE DATABASE 之前运行其他语句,您可能需要在运行当前事务之前commit()

标签: python sql linux pymssql


【解决方案1】:

问题是 cur.execute 每次都会启动一个事务,但不能在事务中执行“CREATE DATABASE”操作

http://social.msdn.microsoft.com/Forums/pl/adodotnetdataproviders/thread/594ff024-8af6-40b3-89e0-53edb3ad7245

>>> connection.autocommit(True)
>>> cursor = connection.cursor()
>>> cursor.execute("CREATE DATABASE Foo")
>>> connection.autocommit(False)

这行得通。奇怪的是它没有记录在 pymssql 中......嗯

【讨论】:

  • FWIW,pyodbc also automatically starts transactions,因此设置 autocommit True 也可以为 pyodbc 解决这个问题。
  • 是的,这也对我有用。奇怪的是,如果您在创建语句之前和之后切换自动提交,它确实有效。
  • 您将如何提供serveruserpassword?在connection
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-11-16
  • 2017-10-28
  • 2015-04-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多