首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用adodbapi正确查询sql ce 4.0数据库文件?

如何使用adodbapi正确查询sql ce 4.0数据库文件?
EN

Stack Overflow用户
提问于 2013-11-17 00:46:55
回答 2查看 2.1K关注 0票数 0

我有以下方法:

代码语言:javascript
复制
def open(self, filename):
    if not os.path.exists(filename):
        raise IOError("Cannot find Game Database file {0}").__format__(filename)

    connstr = "Provider=Microsoft.SQLSERVER.CE.OLEDB.4.0; 
               Data Source={0};".format(filename)
    conn = adodbapi.connect(connstr)
    curs = conn.cursor()
    query = "Select * from Patient;"
    curs.execute(query)
    results = curs.fetchall()
    for r in results:
        print r

运行此命令时,在查询(curs.execute)时会出现以下错误:

代码语言:javascript
复制
(<class 'adodbapi.adodbapi.DatabaseError'>, u"(-2147352567, 'Exception occurred.', (0, u'Microsoft Cursor Engine', u'Multiple-step operation generated errors. Check each status value.', None, 0, -2147217887), None)\nCommand:\nSelect * from Patient;\nParameters:\n[]")

我可以在compactView中成功运行这个精确的查询。

我没有看到什么明显的语法糖?(运行:成功安装了win7 pro x64,Python2.7.x,pywin32和adodbapi。连接字符串似乎起作用了--我可以很好地连接并获得光标)

EN

回答 2

Stack Overflow用户

发布于 2016-12-29 11:59:21

使用adodbapi-2.6.0.7,我用以下方法解决了这个问题:

代码语言:javascript
复制
connection.connector.CursorLocation = 2

例如:

代码语言:javascript
复制
import adodbapi

file = r'FILEPATH'
connection_string = (
    'Provider=Microsoft.SQLSERVER.CE.OLEDB.3.5; Data Source={};'.format(file))
print(connection_string)
connection = adodbapi.connect(connection_string)
connection.connector.CursorLocation = 2
connection.get_table_names()
票数 2
EN

Stack Overflow用户

发布于 2014-03-31 17:37:13

您选择的表列之一可能属于NVARCHAR(N)类型,其中N大于127 [1]。使用服务器端游标可以解决这个问题。

代码语言:javascript
复制
conn.adoConn.CursorLocation = adodbapi.adUseServer
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20021025

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档