2

mysql-pythonを使用して、確立されたデータベースで選択クエリを実行する際に問題が発生しています。問題は、クエリされたデータの代わりにPythona と呼ばれる数値longが返されることです。この数値は、返される必要があるレコードの数に対応していることに注意してください (データベースにログインしてからクエリを実行しMySQLました確実に)。

コードは次のとおりです。

db = MySQLdb.connect(db = 'testdb', user='testuser', passwd='test', host='localhost', charset='utf8', use_unicode=True)
dbc = db.cursor()
result = dbc.execute("""SELECT %s FROM example_movie""", ('title',))
urls = [row[0] for row in result]

コードの最後のビットは、urls = [row[0] for row in result]すべてをリストに入れることです。

エラーは次のようになります。

 TypeError: 'long' object is not iterable

私がpythonを持っているときprint result、それは戻ります:

('RESULT:', 52L)

resultのように囲むstr(result)と、数字を返すだけです52(not long)

どんな助けや提案も大歓迎です!

4

1 に答える 1

5

からの戻り値dbc.executeは選択の結果ではありません。結果の行数だと思います。fetch実際の結果を取得するには、いずれかのメソッドを呼び出す必要があります。こちらのドキュメントを参照してください。

コードを次のように更新する必要があります。

db = MySQLdb.connect(db = 'testdb', user='testuser', passwd='test', host='localhost', charset='utf8', use_unicode=True)
dbc = db.cursor()
row_count = dbc.execute("""SELECT title FROM example_movie""")
results = dbc.fetchall()
urls = [row[0] for row in result]
于 2013-08-22T16:32:58.760 に答える