Python SqlAlchemy-like筛选器不区分大小写,但应区分大小写
我正在为数据库使用SqlAlchemy,但在查询中使用like函数时遇到问题 我的数据库是SQLite 我的要求如下:Python SqlAlchemy-like筛选器不区分大小写,但应区分大小写,python,sqlite,sqlalchemy,case-sensitive,case-insensitive,Python,Sqlite,Sqlalchemy,Case Sensitive,Case Insensitive,我正在为数据库使用SqlAlchemy,但在查询中使用like函数时遇到问题 我的数据库是SQLite 我的要求如下: self.session.query(Value.scan).filter(Value.current_value.like("%" + search + "%"), Value.tag == Tag.tag, Tag.visible == True).distinct().all() 列Value.current_值是一个字符串,您可以在此处看到声明: class Valu
self.session.query(Value.scan).filter(Value.current_value.like("%" + search + "%"), Value.tag == Tag.tag, Tag.visible == True).distinct().all()
列Value.current_值是一个字符串,您可以在此处看到声明:
class Value(Base):
current_value = Column(String, nullable=False)
搜索变量是来自快速搜索栏的str,区分大小写(我从不在它上面调用lower或upper)
我想进行区分大小写的搜索,但结果不区分大小写
我做了一些研究,比如应该区分大小写,我喜欢不区分大小写,所以我不明白为什么它不区分大小写
我应该为我的专栏选择另一种必须区分大小写的类型吗
另一件奇怪的事情是,当在同一列上使用函数contains(不区分大小写的结果)时,我也遇到了同样的问题,但在使用诸如==,!=,之类的运算符时却没有,(区分大小写的结果)
semeone知道为什么它对运算符区分大小写,但对like和contains函数不区分大小写吗
致意
SQLite中的Lucie默认不区分大小写
我所要做的就是激活
我创建了一个类来激活pragma,如下所示:
class ForeignKeysListener(PoolListener):
"""
Class to activate the pragma case_sensitive_like, that makes the
like and contains functions case sensitive
"""
def connect(self, dbapi_con, con_record):
db_cursor = dbapi_con.execute('pragma case_sensitive_like=ON')
engine = create_engine(
'sqlite:///' + os.path.join(self.folder, 'database', 'mia2.db'),
listeners=[ForeignKeysListener()])
创建引擎时,只需添加如下侦听器:
class ForeignKeysListener(PoolListener):
"""
Class to activate the pragma case_sensitive_like, that makes the
like and contains functions case sensitive
"""
def connect(self, dbapi_con, con_record):
db_cursor = dbapi_con.execute('pragma case_sensitive_like=ON')
engine = create_engine(
'sqlite:///' + os.path.join(self.folder, 'database', 'mia2.db'),
listeners=[ForeignKeysListener()])
您使用的是什么数据库?SQLite,对不起,我忘了精确说明!,在默认情况下,SQLite-LIKE在ASCII范围内不区分大小写。可以使用使其区分大小写。SQLAlchemy只是“%”| | expr | | |“%”.Related等
列的简写,如果不是“谢谢你的回答”的副本的话!作为一个小旁注,有利于。