6

pyodbc を使用して mySQl db に接続できません。

これが私のスクリプトのスニペットです:

import pyodbc
import csv

cnxn = pyodbc.connect("DRIVER={MySQL ODBC 3.51 Driver}; SERVER=localhost;DATABASE=mydb; UID=root; PASSWORD=thatwouldbetelling;") 
crsr = cnxn.cursor()

with open('C:\\skunkworks\\archive\\data\\myfile.csv','r') as myfile:
    rows = csv.reader(myfile, delimiter=',', quotechar='"')
    for row in rows:
        insert_str = 'INSERT into raw_data VALUES(something, something)'
        print insert_str
        #crsr.execute(insert_str)
    cnxn.commit()
    myfile.close()

pyodbc.connect() 行で次のエラーが発生します。

pyodbc.Error: ('IM002', '[IM002] [Microsoft][ODBC Driver Manager] データ ソース名が見つからず、既定のドライバーが指定されていません (0) (SQLDriverConnectW)')

このエラー (および一般的な Python スクリプト) に関して別の質問があります。これをスクリプトとして実行すると、黙って失敗します (スタック トレースを期待していました)。エラーが発生した場所を見つけるには、各行を手動で入力する必要があります。

私は今のところ少し怠け者です(例外処理なし)-例外処理なしのPythonスクリプトのこの通常の動作は、サイレントに失敗しますか?

[編集]

既に pyodbc を使用して別のソース (MS Access) からデータを抽出しているため、mysqldb は使用していません。わかりました、正当な理由ではありません-しかし、私はすでにpyodbcに取り組んでおり、「1回限りの」仕事のために別のライブラリ/モジュール/パッケージ(Pythonで呼び出されたものは何でも)と格闘する必要はありません。Windows 環境のさまざまなデータ ソースから Linux の mySQl にデータを移動したいだけです。Linux に移行したら、大地に戻ります。

それが「スクリプト」全体です。上記のコードを拡張子 .py のファイルに保存し、コマンド ラインで python myscript.py を実行しました。XPマシンでこれを実行しています

4

6 に答える 6

3

これと同じ間違いがあったので、接続に使用していたすべてのバージョンを調べました。これは私が見つけたものです:

Python 2.7 32 ビットの場合: - pyodbc は 32 ビットである必要があります - DB ドライバーは 32 ビットである必要があります。(Microsoft Access も 32 ビットである必要があります)

64bit版をご利用の方へ。すべてが 64 ビットであることも確認する必要があります。

私の場合、Oracle DB と Microsoft Access DB に接続しようとしていたため、次のコンポーネントをアーキテクチャのバージョンと一致させる必要がありました。

  • pyodbc (MS アクセス)
  • パイソン
  • cx_Oracle (SQLalchemy の Oracle 方言)
  • Oracle インスタントクライアントの基本 (Oracle。環境変数を作成することを忘れないでください)
  • py2exe (実行可能アプリの作成)
于 2015-01-16T20:16:25.813 に答える
2

MySQLdb (または oursql) と pyodbc はどちらも同じインターフェース ( DB-API 2 ) を持っていますが、前者を使用する場合、ODBC の問題に対処する必要はありません。代わりに MySQLdb (または oursql) の使用を検討することを強くお勧めします。

于 2010-10-20T21:09:59.710 に答える
2

mysql-connector-odbc-3.51.28-win32.msi をインストールするだけです。

およびpyodbc-2.1.7.win32-py2.7.exe。

もちろん、MySQL と python 2.7 がインストールされています。

例:

import pyodbc

cndBase = pyodbc.connect("DRIVER={MySQL ODBC 3.51 Driver}; SERVER=localhost; PORT=3306;DATABASE=nameDBase; UID=root; PASSWORD=12345;") 
ptdBase = cndBase.cursor()

query_str = 'SELECT* FROM nameTabla;'
rows  = ptdBase.execute(query_str)

for rw in rows:
    print list(rw)`enter code here`
于 2011-04-17T18:57:07.947 に答える
2

まず、公式ドキュメントによると、DSN を作成せずに接続する場合は、接続文字列で OPTION=3 を指定する必要があります。

ConnectionString = "DRIVER={MySQL ODBC 3.51 Driver};SERVER=localhost;DATABASE=test;USER=venu;PASSWORD=venu;OPTION=3;"

それでもうまくいかない場合は、DSN を作成してさらにトラブルシューティングを行います。

第二に、Python は黙って失敗するべきではありません。スクリプトを実行したときにそのような場合は、他に何か問題があります。

于 2010-10-20T21:20:43.883 に答える
2

それはあなたのドライバー名ですよね?

Windows -> コントロール パネル -> システムとセキュリティ -> 管理ツール -> ODBC データ ソース -> ドライバー タブでドライバー名を確認 し、川の名前を最初のパラメーターにコピーします。

お気に入り

cnxn = pyodbc.connect("DRIVER={MySQL ODBC 5.3 ANSI Driver}; SERVER=localhost;DATABASE=books; UID=root; PASSWORD=password;")

そして、私の問題は解決しました

または、ドライバーをインストールしなくてもかまいません。手順は簡単です。

于 2016-11-02T05:44:06.780 に答える