Python SQLalchemy中的过滤正则表达式
我有两个表Python SQLalchemy中的过滤正则表达式,python,regex,postgresql,sqlalchemy,Python,Regex,Postgresql,Sqlalchemy,我有两个表users和users\u address,我正在尝试获取名称或地址不完整的所有用户 除了与邮政路由相关的过滤器外,所有功能都运行良好,我在该过滤器中搜索以下模式: (一些数字)+(一个空格)+(一些字母或空格) 这是我的密码: ua = aliased(UserAddress) # Main query, incomplete users or addresses query1 = DBSession.query( User.id,
users
和users\u address
,我正在尝试获取名称或地址不完整的所有用户
除了与邮政路由相关的过滤器外,所有功能都运行良好,我在该过滤器中搜索以下模式:
(一些数字)+(一个空格)+(一些字母或空格)
这是我的密码:
ua = aliased(UserAddress)
# Main query, incomplete users or addresses
query1 = DBSession.query(
User.id,
User.member_id,
User.lastname,
User.firstname,
ua.supplemental_address_1,
ua.supplemental_address_2,
ua.supplemental_address_3,
ua.street_address,
ua.postal_routing,
ua.country,
).distinct()
query1 = query1.join(ua, User.addresses)
query1 = query1.filter(
sa.or_(
User.lastname == u'',
User.firstname == u'',
sa.and_(
ua.primary == True,
sa.or_(
ua.country == u'',
sa.and_(
ua.supplemental_address_1 == u'',
ua.supplemental_address_2 == u'',
ua.supplemental_address_3 == u'',
ua.street_address == u'',
),
~ua.postal_routing.op('regexp')('\d*\ ?(\w\s)*'),
)
)
)
)
但我有一个错误:
ProgrammingError:(psycopg2.ProgrammingError)位于或接近“regexp”的语法错误
第4行:…ress=''或不(用户地址\u 1.postal\u路由regexp'[…
我认为a在调用正则表达式的方式上犯了一个错误,我很确定我的正则表达式本身格式错误:(
有人能帮我吗?好的,自己回答
正如我在书中看到的,
Postgresql中正确的正则表达式调用是~
因此,正确的语法是:
-
~ua.postal\u routing.op('regexp')('\d*\?(\w\s)*'),
+
~ua.postal_routing.op(“~”)(“^\d+\w+$”),
顺便说一下,我改变了模式
也许有更好的语法,但这一个对我很有用。不要在标题中添加“(已解决)”。你已经通过接受答案表明了这一点。