0

私はPythonが初めてで、助けが必要です。グーグルからはあまり見つかりませんでした。私はpython3でpymysqlを使用しています。データベースに接続してクエリを実行できます。テーブル内のすべての行を取得してループしようとすると、エラーが発生しますTypeError: 'int' does not support the buffer interface

query = conn.cursor()
query.execute("SELECT * FROM wp_options")
for row in query:
    print(row)
query.close()

テーブルには文字列と整数が含まれます。理想的には、各行をループして値を検索したいのですが、今は行を取得することさえできません。から例外がスローされているようstruct.unpackですunpack_int24。どんな助けでも大歓迎です

編集

いくつかの問題を解決した後、1 つの列が であることを発見しましたlongtext。他のすべては、このコードで正常に動作します。ロングテキストのフィールドからすべての行を取得しようとすると、エラーになります。mysql のロングテキストが原因で Python エラーが発生するのはなぜですか?

4

2 に答える 2

1

I believe you need to use rows = query.fetchall() (or fetchone() or fecthmany(n)) on your query object (after executing the query) to return row on which you will now iterate:

query = conn.cursor()
query.execute("SELECT * FROM wp_options")
rows = query.fetchall()
for row in rows:
    print(row)
query.close()
于 2012-09-20T18:30:58.737 に答える
0

これが私が見つけた答えです。longtextこの問題は、大量のデータを含む列を持つレコードをクエリしようとしたときに発生していました。この問題は、私が使用しているmysqlアダプターの一部です。pymysql

Python3では、unpack_24、unpack_32、unpack_64はすべて、python2のような文字列ではなくバイトを取得するため、失敗するように見えます。長いデータはエラーをスローし、例外処理はありません。解決策はここで見つかりましたhttp://code.google.com/p/pymysql/issues/detail?id=55

于 2012-09-21T19:05:08.373 に答える