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

Python 如何使用adodbapi正确查询sql ce 4.0数据库文件?,python,sql-server-ce,adodbapi,Python,Sql Server Ce,Adodbapi,我有以下方法: 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};".forma

我有以下方法:

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(查询)上显示以下错误:

(,u“(-2147352567,'发生异常',(0,u'Microsoft光标引擎',u'Multiple-step operation生成错误。请检查每个状态值',无,0,-2147217887),无)\n命令:\n从患者处选择*;\n参数:\n[]”)
我可以在中成功运行此精确查询


我没有看到什么明显的语法糖?(正在运行:win7 pro x64、python 2.7.x、pywin32和adodbapi已成功安装。连接字符串似乎正常工作--我可以连接并获得一个光标)

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

conn.adoConn.CursorLocation = adodbapi.adUseServer

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

conn.adoConn.CursorLocation = adodbapi.adUseServer

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

conn.adoConn.CursorLocation = adodbapi.adUseServer

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

conn.adoConn.CursorLocation = adodbapi.adUseServer

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

connection.connector.CursorLocation = 2
例如:

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()

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

connection.connector.CursorLocation = 2
例如:

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()

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

connection.connector.CursorLocation = 2
例如:

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()

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

connection.connector.CursorLocation = 2
例如:

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()