0

私は次の方法を持っています:

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(query) で次のエラーが発生します。

(<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、python 2.7.x、pywin32、およびadodbapiが正常にインストールされました。接続文字列は機能しているようです-接続してカーソルを正常に取得できます)

4

2 に答える 2

2

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()
于 2016-12-29T03:59:20.900 に答える
1

選択しているテーブル列の 1 つが NVARCHAR(N) 型で、N が 127 より大きい可能性があります [ 1 ]。サーバー側カーソルを使用すると、問題が解決します。

conn.adoConn.CursorLocation = adodbapi.adUseServer
于 2014-03-31T09:37:12.607 に答える