2

次の接続文字列を使用して Access 2007 データベースに接続しようとしています。

conn = pyodbc.connect("Driver={Microsoft Access Driver (*.mdb, *.accdb)};DBQ=<C:\Users\JSeinfeld\Desktop\Backup databases\Database_6.7.accdb>;")

次のエラーが表示されます。

トレースバック (最新の呼び出しが最後):
ファイル ""、1 行目、conn = pyodbc.connect("Driver={Microsoft Access Driver (*.mdb, *.accdb)};DBQ=;")

エラー: ('HY000', "[HY000] [Microsoft][ODBC Microsoft Access Driver]General error Unable to open registry key temporary (volatile) Ace DSN for process 0x167c Thread 0x1568 DBC 0x1c67a5c

ジェット'。(63) (SQLDriverConnectW); [HY000] [Microsoft][ODBC Microsoft Access Driver]一般エラーレジストリ キーを開けませんプロセス 0x167c の一時 (揮発性) Ace DSN スレッド 0x1568 DBC 0x1c67a5c

ジェット'。(63); [HY000] [Microsoft][ODBC Microsoft Access Driver] 有効なファイル名ではありません。(-1044); [HY000] [Microsoft][ODBC Microsoft Access Driver]一般エラーレジストリ キーを開けませんプロセス 0x167c の一時 (揮発性) Ace DSN スレッド 0x1568 DBC 0x1c67a5c

ジェット'。(63); [HY000] [Microsoft][ODBC Microsoft Access Driver]一般エラーレジストリ キーを開けませんプロセス 0x167c の一時 (揮発性) Ace DSN スレッド 0x1568 DBC 0x1c67a5c

ジェット'。(63); [HY000] [Microsoft][ODBC Microsoft Access Driver] 有効なファイル名ではありません。(-1044)")

SO でこのような別の質問がありますが、私が持っていない 32/64 ビットの互換性の問題がありました。この質問に対する良い答えはないようですが、Python を使用して Access 2007 にデータをクエリまたは書き込む他の方法がわからないため、誰かがデータベースへの接続を手伝ってくれることを願っています。

ありがとう

4

4 に答える 4

3

同じ問題がありました-アクセスデータベースの場所で使用されているバックスラッシュをエスケープする単純なケースでした

>>> conn = pyodbc.connect("Driver={Microsoft Access Driver (*.mdb, *.accdb)};DBQ=C:\\access\\site_be.accdb;")

一方、働いた

>>> conn = pyodbc.connect("Driver={Microsoft Access Driver (*.mdb, *.accdb)};DBQ=C:\access\site_be.accdb;")

私にエラーを与えていた Jet'. (63); [HY000] [Microsoft][ODBC Microsoft Access Driver] Not a valid file name. (-1044)")

それが役に立ったことを願っています..

于 2011-08-04T10:50:13.580 に答える
1

ファイル名から括弧を取り除いてみてください。

conn = pyodbc.connect("Driver={Microsoft Access Driver (*.mdb, *.accdb)};DBQ=C:\Users\JSeinfeld\Desktop\Backup databases\Database_6.7.accdb")
于 2011-06-24T15:19:00.917 に答える
0

フォルダーに *.ldb ファイルはありますか?

非常によく似たエラー メッセージが表示されましたが、「ファイルは既に使用されています」というメッセージも含まれていました。私の場合、最終的にデータベース (.mdb の隣にある .ldb ファイル) にロックがかかっていることに気付きました。常にデータベースを使用するサービスを実行しています。マルチユーザー データベース エンジンに切り替える時期だと思います。

実験として、データベースのコピーを作成し、pyodbc はコピーに問題なく接続しました。これは明らかに長期的な解決策ではありませんが、少なくとも問題が何であったかはわかっています。

于 2011-08-02T13:09:55.593 に答える
0

ファビオラスはそれを正しく理解しました。

バックスラッシュ文字は、次の文字が文字列内で特別な意味を持つことを意味します。二重のバックスラッシュを解読すると...最初のバックスラッシュはpythonに特別な文字列文字を準備するように指示し、2番目のバックスラッシュは特別な文字列文字です(この場合はバックスラッシュです)

\n = newline
\t = tab
\\ = backslash
于 2011-08-10T23:13:15.440 に答える