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
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])
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With