https://stackoverflow.com/questions/68147587/regis... используя это, как источник новых знаний, можно переопределить func.lower:
...
import sqlalchemy
def _lower(arg: str) -> str:
return arg.lower()
@sqlalchemy.event.listens_for(db.engine, "connect")
def on_connect(dbapi_connection, connection_record):
dbapi_connection.create_function("lower", 1, _lower)
Теперь func.lower работает и с латинскими буквами, и с кириллицей
Изменено
Более оптимизированное решение:
1. Устанавливаем
sqlite-icu (
https://pypi.org/project/sqlite-icu/):
pip install sqlite-icu
2. Подключаем sqlite-icu:
import sqlalchemy
import sqlite_icu
@sqlalchemy.event.listens_for(db.engine, "connect")
def on_connect(dbapi_connection, connection_record):
dbapi_connection.load_extension(sqlite_icu.extension_path().replace(".so", ""))