2012-01-08 2 views
9

Я хочу сделать Python MySQL запросов, таких как:MySQL Python LIKE подстановочные

cursor = connection.cursor() 
sql = "select text \ 
     from steps \ 
     where text like '%start%'" 
cursor.execute(sql) 

Но% не рассматривается в качестве шаблона, он ожидает переменную, я думаю. Я получаю сообщение об ошибке:

TypeError: not enough arguments for format string 

Ничто не работает. Было бы неплохо, если бы я мог использовать переменную вместо «% start%»

ответ

16

Предполагаю, что вы используете python db-api.

Вы можете попробовать уклониться от % как %%.

Что касается прохождения параметров существует целый ряд способов, например:

cursor = connection.cursor() 
sql = """select text 
    from steps 
    where text like %s""" 
cursor.execute(sql, (('%' + 'start' + '%',)) 

Вы можете увидеть примеры других способов передачи параметров on this blog в разделе «Интерфейс modułu». Не все из них работают со всеми разъемами.

+1

Escaping with %% works, thanks :) Использование литеральных строк дало ту же ошибку. – user984003

+0

@ user984003 странно, но я не могу даже проверить его прямо сейчас. рад, что это помогло. – soulcheck

+0

@soulcheck: Синтаксис строк не имеет ничего общего с интерпретацией '%' (в отличие от того, как Bourne Shell или Ruby интерпретируют '$', например). Итак, '' ""% start% "" "' является таким же, как '% start%" ', что совпадает с' '% start% '' и' r '% start%' 'и т. Д. –

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