2016-09-03 6 views
-1

Я запускаю python3.4, и я пытаюсь запустить запрос с библиотекой MySQLdb.Объект Python3.4 int is iterable - MySQLdb

Я сделал один успешный запрос, но теперь я застреваю, когда дело доходит до целых чисел в запросе. Вот код:

   location = player_info[6] 

       query2 = ("SELECT name FROM locations WHERE id=%d"); 
       execute = cursor.execute(query2, (location)); 

Значение переменной местоположения 2. Я просто продолжаю получать сообщение об ошибке:

File "login.py", line 75, in tryLogin execute = cursor.execute(query2, (location));

File "/usr/lib/python3/dist-packages/MySQLdb/cursors.py", line 195, in execute args = tuple(map(db.literal, args)) TypeError: 'int' object is not iterable

Я попытался изменить% d-% s потому, что кто-то сказал, что все должно быть в строчном формате, но я все равно получаю ту же ошибку.

Я также попытался изменить "местоположение" переменной просто:

место = 2

Любые идеи?

+0

Там пример здесь использует ряд. http://mysql-python.sourceforge.net/MySQLdb.html#some-examples –

+0

Что случилось с вашим другим комментарием? Где я должен поставить вопросник ??????? ?? ?? ? – jdoe

+0

Я думал о PreparedStatements на других языках. –

ответ

1
  execute = cursor.execute(query2, (location)); 

В Python (location) это выражение в скобках, не кортеж. Для того, чтобы заставить что быть кортеж, вам нужно добавить запятую: (location,)

  execute = cursor.execute(query2, (location,));