6

これが私が試したことです:

-検索でVistaのODBCデータソースマネージャー*を検索します。

-新しいファイルデータソース*を追加し、Microsoft Access用ドライバー(* .mdb)を選択し、目的のmdbファイルを選択します。

-Pythonシェルからpyodbcをインポートして、次のことを試してください。

pyodbc.connect("DSN=<that Data Source I just created>")

次のエラーメッセージが表示されます(ポルトガル語**)。

Error: ('IM002', '[IM002] [Microsoft][ODBC Driver Manager] Nome da fonte de dados n\xe3o encontrado e nenhum driver padr\xe3o especificado (0) (SQLDriverConnectW)') 

これは、「データソース名が見つからず、標準ドライバが指定されていない」と解釈されます。

私は何が間違っているのですか?それを正しくする方法は?また、ドキュメントをWebで検索しましたが、価値のあるものは何も見つかりませんでした。誰かがドキュメントを推奨できますか?

*私のWindowsはポルトガル語であるため、名前が完全に正確でない場合があります。

**いいえ、ポルトガル語には文字として「3」と「\」がありません。これらは誤って印刷された特殊文字です

4

4 に答える 4

6

DSN =は、システムまたはユーザーのDSNにのみ使用されます。

DSNファイルの場合、FILEDSN = c:\myDsnFile.dsnを使用する必要があります

http://www.connectionstrings.com/はあなたの親友です。

于 2010-07-15T01:10:44.407 に答える
2

Accessではなく別のODBCドライバーではありますが、pyodbcでも同様の問題が発生しました。

これが私を助けたものです。 http://robertoschiabel.wordpress.com/2008/02/28/windows-x64-32bit-odbc-vs-64bit-odbc/ (このURLがなくなった場合の適切なKB記事は次のとおりです 。http://support。 microsoft.com/kb/942976/en-us

以前のサーバーハードウェアが故障し、64ビットOSにすばやく再デプロイする必要がありました。これは、利用可能なのはそれだけだったためです。通常のODBC管理ツールを使用して、適切な名前のDSNを追加しましたが、それでも見つからないと主張しました。ODBC管理者の特別な32ビットバージョンを実行している場合にのみ、pyodbcを使用するスクリプトが検出できるDSNを定義できました。

于 2011-12-22T16:54:31.570 に答える
1

私はodbcモジュール(ActiveState Pythonに含まれています)を使用していますが、テストされpyodbcており、動作します:

#db = odbc.odbc('northwind')
#db = odbc.odbc('Driver={Microsoft Access Driver (*.mdb)};Dbq=Nwind.mdb;Uid=;Pwd=;')
#db = pyodbc.connect('Driver={Microsoft Access Driver (*.mdb)};Dbq=Nwind.mdb;Uid=;Pwd=;')
db = pyodbc.connect('DSN=northwind')

もちろん、コメント付きの接続も機能します。

ユーザーDSNとして構成nothwindしたので、おそらくODBCデータベース接続をユーザーDSNまたはシステムDSNとして構成する必要があります。または、ODBC Administratorで構成せずに、ファイルをポイントできるConnectStringを使用でき.mdbます。

于 2010-07-16T09:04:02.963 に答える
1

pyodbcとのodbc接続を一覧表示して、何を使用しているかを確認するのが賢明です。適切なpyodbc32ビットPython32ビットドライバーを使用していることを確認してください。64ビットアクセスファイルを使用する場合は、ドライバーを提供する64ビットMSアクセスを使用する必要があります。

sources = pyodbc.dataSources()
keys = sources.keys()
for key in keys: 
   print key
于 2015-02-18T14:57:19.720 に答える