模式匹配" LIKE"并使用Python postgres逃脱特殊角色?

时间:2015-03-08 16:15:13

标签: python postgresql pattern-matching

如何模式匹配“LIKE”并使用下面的Python代码转义特殊字符?我收到了特殊字符的错误。

“参数”值为“1.1”,“1.2”,“1.3”

cr.execute("select sequence from account_stock_info "
"where sequence like '%s.%' "
"order by sequence ",
(tuple(parameter)))

关于PGADMIN的原始查询是:

select sequence from account_stock_info
where sequence like '1.1.%'
order by sequence

答案:“1.1.1”,“1.1.1.03”,“1.1.2”,“1.1.2.04”,“1.1.3”

请帮助Python模式匹配。

1 个答案:

答案 0 :(得分:1)

第一个错误是使用tuple函数和字符串参数:

>>> tuple('1.1')
('1', '.', '1')

你可以明确地传递元组:(parameter,)或使用dict传递参数。

要将百分号转到LIKE语句,您可以在查询中添加额外的百分号:

parameter = "1.1"
cr.execute("select sequence from account_stock_info "
           "where sequence like '%s.%%' "
           "order by sequence ",
           (parameter,))

或在参数中传递(引用可以在这里删除):

parameter = "1.1.%"
# ...
"where sequence like %s "