1

Python のテスト プログラムが機能しない理由を理解しようとしています。MySql Workbench からデータベースに問題なくアクセスできます。プログラミングの部分はすべて正しく行ったと思います。また、管理ツールに移動し、データベースを ODBC データベース ソースに追加しました。これが私のテスト プログラムです。違う:

import pypyodbc

conn = pypyodbc.connect("DSN=database")


def func():
    l = []
    cur = conn.cursor()
    try:
        cur.execute("SELECT foo FROM table")
    except pypyodbc.DatabaseError:
        pass
    conn.commit()
    for i in cur:
        l.append(i)
    conn.close()
    cur.close()

func()

私が得ているエラーは次のとおりです。

Traceback (most recent call last):
  File "D:/path/test.py", line 21, in <module>
    func()
  File "D:/path/test.py", line 14, in func
    for i in cur.fetchall():
  File "D:/path/test.py", line 1819, in fetchall
    row = self.fetchone()
  File "D:/path/test.py", line 1893, in fetchone
    check_success(self, ret)   
  File "D:/path/test.py", line 986, in check_success
    ctrl_err(SQL_HANDLE_STMT, ODBC_obj.stmt_h, ret, ODBC_obj.ansi)
  File "D:/path/test.py", line 956, in ctrl_err
    raise DataError(state,err_text)
pypyodbc.DataError: ('22018', '[22018] [MySQL][ODBC 5.3(a) Driver][mysqld-5.5.5-10.0.17-MariaDB]')
4

1 に答える 1

1

エラー 22018 は「無効な文字」エラーです。一般的な原因の 1 つは、ANSI ("(a)") バージョンの MySQL Connector/ODBC を使用して Unicode データを取得しようとすることです。その場合の解決策は、代わりに Unicode ("(w)") バージョンのドライバーを使用することです。

于 2015-05-27T14:39:20.687 に答える