风中一鼎 发表于 2023-9-13 17:28:15

PyODBC但是为什么呢?

我试着在两种情况下执行T-SQL查询(我用Win7,python 3.2,MS SQL Server Express 2008,适用于python
3.2的pyodbc):
-情况1:
使用MS SQL Server Management Studio,我试着执行查询:
USE master;CREATE DATABASE Sales ON (NAME = Sales_dat,FILENAME = 'C:\saledat.mdf         SIZE = 10,   MAXSIZE = 50,   FILEGROWTH = 5 ) LOG ON ( NAME = Sales_log,   FILENAME = 'C:\salelog.ldf',   SIZE = 5MB,   MAXSIZE = 25MB,FILEGROWTH = 5MB );返回成功结果
情况2:
import pyodbccxnn=pyodbc.connect('DSN=SERVER;UID=sa;PWD=password')cur=cxnn.cursor()cur.execute("USE master;CREATE DATABASE Sales ON (NAME = Sales_dat,FILENAME = 'C:\saledat.mdf',   SIZE = 10,   MAXSIZE = 50,   FILEGROWTH = 5 ) LOG ON ( NAME = Sales_log,   FILENAME = 'C:\salelog.ldf',   SIZE = 5MB,   MAXSIZE = 25MB,FILEGROWTH = 5MB );")cxnn.commit()但在运行代码后,我收到了错误的消息
    pyodbc.Error: ('HY000','The driver did not supply an error!')假如我没有运行代码
cxnn.commit()但是为什么呢?
                                                               
    解决方案:                                                               
                                                                由于我不太了解的原因,将autocommit设置为true这个问题似乎可以解决。请注意,反斜杠仍需转换。
自动提交可以通过两种方式设置:
cxnn=pyodbc.connect('DSN=SERVER;UID=sa;PWD=password',autocommit=True)或者:
cxnn=pyodbc.connect('DSN=SERVER;UID=sa;PWD=password')cxnn.autocommit = True完成后,应按预期创建游标并执行查询:
cur=cxnn.cursor()cur.execute("USE master;CREATE DATABASE Sales ON (NAME=Sales_dat,FILENAME='C:\\saledat.mdf',SIZE=10,MAXSIZE=50,FILEGROWTH=5) LOG ON (NAME=Sales_log,FILENAME='C:\\salelog.ldf',SIZE=5MB,MAXSIZE=25MB,FILEGROWTH=5MB );")
页: [1]
查看完整版本: PyODBC但是为什么呢?