2011-12-13 41 views
1

我使用sqlalchemy作为替换为MySQLdb的下拉列表,这意味着我正在使用session.execute而不是使用映射器。sqlalchemy“不完整格式”问题

但是,我遇到了一个可重现的错误,即ValueError:“不完整格式”异常,无论我在查询中使用“%”,这是一个问题,因为日期格式化UNIX_TIMESTAMP时需要“%”字符和MySQL中的LIKE语句。

我尝试过使用“\%”,“\\%”和“%%”但没有运气。

+3

一个代码示例将是非常有帮助 – van 2011-12-13 21:47:06

回答

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%'