2014-02-17 2 views
0

С помощью этого кода:TypeError: неподдерживаемый тип операнда (ов) для%: 'длинные' и 'ул'

current_time=time.localtime() 
time_now=time.strftime('%H:%M:%S',current_time) 

cursor.execute("Select * from SUBSCRIPTION_DETAILS where Alert_time='%s'") % time_now 

Я получаю ошибку:

unsupported operand type(s) for %:long and str 

type из Alert_time является VARCHAR

+0

может кто-нибудь помочь plz – user3320704

+1

Привет, приветствуются. Иногда требуется некоторое время, прежде чем кто-то успеет ответить на ваш вопрос, может быть, несколько часов, а может быть, даже дней. Потерпи! Запрашивать снова через 5 минут обычно не считают очень дружелюбным :-) – Carpetsmoker

ответ

2

Вы упустили свой %

Что вы делаете? вл является:

cursor.execute("[snip]") % time_now 

Так вы подаете time_now на результат cursor.execute

Что вы хотите использовать % со строкой, например, так:

cursor.execute("[snip]" % time_now) 

НО Дон» t сделать это, вы должны использовать:

cursor.execute("Select * from SUBSCRIPTION_DETAILS where Alert_time=%s", (time_now,)) 

Обратите внимание, что здесь мы передаем time_now в качестве второго параметра вместо использования оператора %. Это позволит убедиться, что запрос правильно дезинфицирован, чтобы предотвратить атаки SQL-инъекций.

Требуется (несколько уродливое) отставание ,, чтобы убедиться, что второй аргумент является кортежем.

+0

TypeError: не все аргументы, преобразованные во время форматирования строки Я получаю эту ошибку при изменении кода – user3320704

+0

time_now = time.strftime ('% H:% M:% S ', current_time) cursor.execute ("Выберите * из SUBSCRIPTION_DETAILS, где Alert_time =?", (Time_now,) – user3320704

Смежные вопросы