2011-06-24 187 views
2

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

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

は、私はこのエラーを取得する:SO上でこのような別の質問がありますが、私が持っていない32/64ビットの互換性の問題があった

Traceback (most recent call last):
File "", line 1, in conn = pyodbc.connect("Driver={Microsoft Access Driver (*.mdb, *.accdb)};DBQ=;")

Error: ('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

Jet'. (63) (SQLDriverConnectW); [HY000] [Microsoft][ODBC Microsoft Access Driver]General error Unable to open registry key Temporary (volatile) Ace DSN for process 0x167c Thread 0x1568 DBC 0x1c67a5c

Jet'. (63); [HY000] [Microsoft][ODBC Microsoft Access Driver] Not a valid file name. (-1044); [HY000] [Microsoft][ODBC Microsoft Access Driver]General error Unable to open registry key Temporary (volatile) Ace DSN for process 0x167c Thread 0x1568 DBC 0x1c67a5c

Jet'. (63); [HY000] [Microsoft][ODBC Microsoft Access Driver]General error Unable to open registry key Temporary (volatile) Ace DSN for process 0x167c Thread 0x1568 DBC 0x1c67a5c

Jet'. (63); [HY000] [Microsoft][ODBC Microsoft Access Driver] Not a valid file name. (-1044)")

。この質問には良い答えはないようですが、PythonでAccess 2007にデータを問い合わせたり書き込んだりする方法がわからないので、誰かが私のデータベースに接続するのを助けることができれば幸いです。

ありがとうございます。

答えて

1

ファイル名の中に括弧を入れてみてください。

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

スティーブンねえ、私ができることです月曜日までこれをテストしますが、私はそれが簡単だと思っています:) +1しかし、それは私にとって完璧な意味を持っています。 – jerry

0

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

私は非常に似たエラーメッセージを表示しましたが、私も "file already in use"を含んでいました。私の場合、最終的にデータベース(.mdbの隣に.ldbファイル)がロックされていることがわかりました。私は常にデータベースを使用しているサービスを実行しています。マルチユーザーデータベースエンジンに切り替えるべきだと思います。

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

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

希望が助けられました..

0

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

バックスラッシュ文字は、次の文字が文字列内で特別な意味を持つことを意味します。だから、二重のバックスラッシュを解読する...最初のバックスラッシュは特別な文字列の文字のために準備するのpythonを伝え、第二のバックスラッシュは特別な文字列の文字(この場合はバックスラッシュがある)「

\n = newline 
\t = tab 
\\ = backslash 
関連する問題