2011-12-13 5 views
1

Я использую sqlalchemy как замену MySQLdb, это означает, что я использую session.execute, а не используя mappers.sqlalchemy проблемы с неполным форматом

Однако я столкнулся с воспроизводимой ошибкой, а именно: исключение ValueError: исключение «неполного формата», где я использую «%» в запросе, это проблема, поскольку символ «%» необходим для форматирования даты UNIX_TIMESTAMP и оператор LIKE в MySQL.

Я пробовал использовать «\%», «\\%» и «%%» без везения.

+3

образец кода будет весьма полезным – van

ответ

3

В конкретном случае вы можете использовать методы: contains(), startswith(), endswith()

Для иллюстрации того, как использовать его:

session.query(Users).filter(User.full_name.startswith('Mr.%s' % first_name))) 
# => It is equivalent to requesting full_name LIKE 'Mr.user1%' 

session.query(Users).filter(User.full_name.endswith('%s.' % last_name))) 
# => It is equivalent to requesting full_name LIKE '%user1.' 

session.query(Users).filter(User.full_name.contains('%s' % middle_name))) 
# => It is equivalent to requesting full_name LIKE '%user1%'