У меня есть 2 таблицы users
и users_address
, и я пытаюсь получить всех пользователей с неполным именем или адресом.Фильтр REGEX в SQLalchemy
Все работает хорошо, за исключением фильтра, связанные с почтовой маршрутизации, где искать образец:
(некоторые цифры) + (пробел) + (некоторые буквы или пробелы)
Вот мой код:
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) syntax error at or near "regexp" LINE 4: ...ress = '' OR NOT (user_addresses_1.postal_routing regexp '[[...
Я думаю, что сделал ошибку в том, чтобы вызвать регулярное выражение, и я уверен, что сам мой регулярное выражение неправильно отформатирована :(
Может кто-нибудь мне помочь?
Не добавляйте «(разрешено)» в заголовок. Вы указали это, приняв ответ. –