ストアド プロシージャを使用して、mysql データベースからいくつかの行を取得しています。
私は非常に基本的な構文を使用しています:
retarr = []
cursor.callproc("employee_get", (-1, -1, -1))
for res in cursor.stored_results():
retarr.append(res.fetchall())
cursor.close()
...
今。一部のデータ結果は Unicode 文字列です。データベース内の文字列のエンコードに UTF-8 を使用しています。接続で charset="utf8" と use_unicode=True を使用しています。
Unicode 文字を含むキャッチされたデータ (データ タプル全体) を印刷しようとすると、問題が発生します。お気に入り:
for row in retarr[0]:
print(row)
最初にキャッチされた行を適切に出力します。しかし、最初のものにはユニコード文字がありません。次に 2 番目に、有名なエラーが表示されます: UnicodeEncodeError: 'ascii' codec can't encode character '\u0119' in position 19: ordinal not in range (128). どうしたの?私は非常に基本的な何かが欠けていると信じています。
標準の mysql コネクタである Python 3.3.2 を使用しています。OSX.