gpt4 book ai didi

mysql - 如何强制 filter() 匹配 sqlalchemy 中的确切大小写(区分大小写)?

转载 作者:可可西里 更新时间:2023-11-01 07:20:19 26 4
gpt4 key购买 nike

我正在使用 sqlalchemy 和 mysql 数据库。当我在用户对象上使用以下查询时:

session.query(User).filter(User.name == 'admin').all()

我得到的所有结果的用户名都是“Admin”、“admin”、“ADMIN”(基本上都是不区分大小写的“admin”)。我想知道如何强制 filter() 过滤完全匹配项(不忽略大小写)?

更新:实际上我才知道 mysql 不允许 varchar() 数据类型区分大小写的列。因此,最简单的解决方案是在 mysql 中声明时强制列区分大小写,如:

  `name` VARCHAR(255) BINARY NULL UNIQUE,

但我仍然很想知道如何强制过滤器准确匹配结果(不忽略大小写)。无论如何使用一些内置(或自定义,如果可能)sqlalchemy func?

最佳答案

select * from users where binary name = 'AdMin';
select * from users where binary name = 'admin';


from sqlalchemy import func
User.query.filter(User.name == func.binary('AdMin')).count()
User.query.filter(User.name == func.binary('admin')).count()

关于mysql - 如何强制 filter() 匹配 sqlalchemy 中的确切大小写(区分大小写)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22172727/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com