当前位置: 首页 > 面试题库 >

PyODBC返回错误,但是为什么呢?

郭弘方
2023-03-14
问题内容

我尝试在两种情况下执行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 pyodbc
cxnn=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 );")


 类似资料:
  • GetFolder操作给了我同样的结果。 此错误通常由未经许可的邮箱帐户引起。但我的所有用户都有活跃的Exchange许可证。为什么我会得到这样的ErrorNonExistentMailbox错误响应?

  • 大家好, 这就是我的两难处境:在Chrome、Edge和Internet Explorer上,AJAX调用只返回成功,运行以下查询,一切都很好。但是,在Firefox中,AJAX调用返回时控制台日志中有一个错误,最终第二次被触发(不是有意的)以返回成功,从而开始查询等。。。警报发出“错误”信号。 我正试图从最终用户的角度解决这个问题。该函数正在运行,但如果警报返回时出错,用户将不知道他们是否正确完

  • 我们在windows 10机器上从Tomcat 9.0.29升级到9.0.44,并收到503条错误消息。Tomcat托管Java应用程序。对Tomcat服务器的请求作为工作线程从单独的Apache代理服务器通过端口8010发送。我可以看到Tomcat服务正在运行,Java应用程序正在启动并运行。这可以从Tomcat服务器上的//localhost:8080/{JavaApp}进行验证。 但是,来自

  • 问题内容: 考虑以下Python代码: 运行此命令时,将引发异常: 但是,将其放入浏览器后,搜索将按预期返回。这里发生了什么?如何克服这个问题,以便可以通过编程方式搜索Google? 有什么想法吗? 问题答案: 如果您想通过编程界面“适当”进行Google搜索,请查看Google API 。这些不仅是搜索Google的正式方法,而且如果Google更改结果页面的布局,它们也不太可能改变。

  • 问题内容: 我有一台运行Java servlet的Tomcat服务器。我正在尝试使一个servlet返回给定的加密ID的存储文件。 编号:100 加密的ID:+ e4 / E5cR / aM = 网址编码的ID:%2Be4%2FE5cR%2FaM%3D 结果URL:http:// localhost / file / demo /%2Be4%2FE5cR%2FaM%3D 当我尝试访问该链接时,我什

  • 我有一个运行Java servlets的Tomcat服务器。我正在尝试制作一个返回存储文件的 servlet,给定它们的加密 ID。 编号: 100 加密ID:e4/E5cR/aM= URL编码的ID: +e4/E5cR/aM= 生成的网址:http://localhost/file/demo/+e4/E5cR/aM= 当我试图访问那个链接时,我甚至没有进入我的servlet的代码——服务器返回这