TypeError: 'int' object is not iterable - Python

て烟熏妆下的殇ゞ 提交于 2019-12-05 00:09:54

问题


I got the following error:

  File "/home/ec2-user/test/test_stats.py", line 43, in get_test_ids_for_id
    cursor.execute("""select test_id from test_logs where id = %s """, (id))
  File "/home/ec2-user/.etl/lib/python2.7/site-packages/MySQLdb/cursors.py", line 187, in execute
    query = query % tuple([db.literal(item) for item in args])
TypeError: 'int' object is not iterable

Here's the section of my code I'm having trouble with:

def get_test_ids_for_id(prod_mysql_conn, id):
    cursor = prod_mysql_conn.cursor()
    cursor.execute("""select test_id from test_logs where id = %s """, (id))
    rows = cursor.fetchall()
    test_ids = []
    for row in rows:
      test_ids.append(row[0])
    return test_ids

回答1:


You need to give cursor.execute a tuple, but you only gave it one integer:

(id)

Add a comma to make that a tuple:

(id,)

The full line then'd be:

cursor.execute("""select test_id from test_logs where id = %s """, (id,))

Putting an expressione in parentheses just 'groups' that one expression. It is the comma that makes something a tuple:

>>> (42)
42
>>> (42,)
(42,)

Any iterable will do really, so you could also use [...] brackets:

cursor.execute("""select test_id from test_logs where id = %s """, [id])


来源:https://stackoverflow.com/questions/28365580/typeerror-int-object-is-not-iterable-python

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!