python的django框架objects.filter(xxx__exact=xxx)在Windows下的MySQL查询“唯一失效”

在Windows环境下,使用python的django框架进行objects.filter(xxx__exact=xxx)查询时遇到问题,查询结果未体现唯一性。问题源于在models.py中创建数据表时未设置字段的敏感属性,且在Navicat for MySQL建立数据库时未正确设置字符集和排列规则。解决方案是确保使用utf8mb4字符集,并选择utf8mb4_bin排列规则,以确保字符串区分大小写。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

python的django框架objects.filter(xxx__exact=xxx),在windows下的MySQL查询“准确查询”失效,查询结果没有唯一性

原因与解决

问题: 查询失效,结果并没有唯一性

user = models.User.objects.filter(username__exact=username)

原因: 在django框架下models.py下创建数据表时没有设置字段的敏感属性

class User(models.Model):
    """用户信息"""
    id = models.AutoField(primary_key=True)
    username = models.SlugField(unique=True, null=False, verbose_name='用户账号')
    password = models.SlugField(max_length=256, unique=False, null=False, verbose_name='用户密码')

而在Navicat for MySQL手动建库时也没有设置库的属性。
注意: 字符集-utf8mb4才是真正的utf-8
在这里插入图片描述
注意: 排列规则一定要选择-utf8mb4_bin,如果没有选择到这个,就去表里面修改,–>设计表在这里插入图片描述
注意: 如果是命令行建库请查看mysql字符串区分大小写的问题

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值