use*_*rbb 6 python sql-server pyodbc python-2.7
我正在尝试使用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()
Run Code Online (Sandbox Code Playgroud)
它因此错误而失败
多语句事务中不允许CREATE DATABASE语句
它失败是因为该.execute方法启动了一个事务而CREATE DATABASE无法在事务中运行.
那么有没有其他方法来CREATE DATABASE使用python 执行命令?
建立连接时,pyodbc默认autocommit=False符合Python的DB-API规范.因此,当执行第一个SQL语句时,ODBC将开始一个数据库事务,该事务在Python代码执行.commit()或.rollback()连接之前一直有效.
SQL Server不允许CREATE DATABASE在此类事务中执行,因此我们需要autocommit在发出此类语句之前以模式进行连接.这可以在打开连接时完成......
conn = pyodbc.connect(conn_str, autocommit=True)
Run Code Online (Sandbox Code Playgroud)
...或者autocommit如果已建立连接,则切换到模式:
conn = pyodbc.connect(conn_str) # autocommit=False by default
# ...
conn.autocommit = True
conn.execute("CREATE DATABASE MyNewDatabase")
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2661 次 |
| 最近记录: |