pyodbcをMicrosoft Jet経由で使用して、PythonプログラムからMicrosoft Access 2003データベースのデータにアクセスしています。PyODBCとMicrosoft Access:単純なクエリの結果が一貫しない
Microsoft Accessデータベースはサードパーティのものです。私はそのデータを読んでいるだけです。
私は一般的に必要なデータを抽出するのに成功していますが、最近はいくつかの相違があることに気付きました。
私は、フォームの単純なクエリ、それを煮詰めている:私は、フィールド名と値を難読化されてきましたが、本当に、それははるかに些細なものより取得していません
SELECT field1 FROM table WHERE field1 = 601 AND field2 = 9067
! Accessでクエリを実行すると、1つのレコードが返されます。
そこで私は、このようなコードで、pyodbc上でそれを実行します。
connection = pyodbc.connect(connectionString)
rows = connection.execute(queryString).fetchall()
(繰り返しますが、それははるかに些細なものより取得していません!)
のqueryStringの値がカットされますAccessで作業クエリから貼り付けられましたが、は、レコードを返します。私は同じレコードを返すことを期待していました。
フィールド2の別の値を検索するようにクエリを変更すると、ビンゴが動作します。それはそれが拒否するいくつかの値だけです。
だから、私を助けてください。この不一致を説明するために、次にどこを調べるべきですか?私が些細な質問の結果を信頼できない場合、私はこのプロジェクトにチャンスがありません!
更新:さらに簡単になります。次のクエリは、それが時折データを移入するために他のアプリケーションでのキャッシングおよび/または不適切なトランザクション管理のいくつかのフォームに関連している場合、私は熟考
...テーブルFROM
SELECT COUNT(*)を異なる番号を与えます。
クエリ文字列を実行するカーソルオブジェクトがありますか? Fetchallはカーソル上で呼び出され、行を生成します。 http://code.google.com/p/pyodbc/wiki/Rows – barrowc
@barrowc、Interestingを参照してください。私はcursor()呼び出しがないことに気付かなかった。私はこれをどこかの例からコピーしたと確信しています。私はそれを[rows = connection.cursor()。execute(queryString).fetchall()]に追加しようとしましたが、Python DB API仕様よりもpyodbcが寛容です。 – Oddthinking