python - 使用 MySQL 时,Django IntegerField 将 0 作为 None 值检索

标签 python mysql django

Django 已开始将我的所有 IntegerField 的零值检索为 None 而不是零。

我的所有模型都发生这种情况。我最近更新了 mysql-connector-python 所以我不确定这是否是问题所在。

有谁知道会导致 Django 开始在我的所有模型上执行此操作的全局设置或错误吗?

示例:

class Brands(models.Model):
   brand_id = models.AutoField(primary_key=True)
   brand_name = models.CharField(unique=True, max_length=512)
   blacklisted = models.IntegerField()
   blacklisted_date = models.DateTimeField(blank=True, null=True)
   date_created = models.DateTimeField()

   class Meta:
       managed = False
       db_table = 'brands'

黑名单的值全部被检索为 None 而不是 0。 它们在数据库中存储为 0。

Django 版本 2.2.1

MySQL InnoDB

感谢您提供的任何帮助。

最佳答案

此错误的解决方法:将 'use_pure': True 添加到数据库选项。 这迫使 mysql-connector-python 使用纯 python 连接而不是 C 扩展,我相信该错误存在于其中,请参阅 here

DATABASES = {
    'default': {
        'ENGINE': 'mysql.connector.django',
        'NAME': os.environ['MYSQL_DATABASE'],
        'USER': os.environ['MYSQL_USER'],
        'PASSWORD': os.environ['MYSQL_PASSWORD'],
        'OPTIONS': {
            'use_pure': True,
    }
}

或者您可以在 settings.py 文件中进行设置

'OPTIONS': {'use_pure': True }

关于python - 使用 MySQL 时,Django IntegerField 将 0 作为 None 值检索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60379449/

相关文章:

python - 为什么 django 的 reverse() 不能匹配电子邮件参数?

python - 如何在 ViewSet 中返回 403 而不是 404

python - 如何根据TurboGears中的模型对象动态生成表单?

php - 如何使用带有 HTML 表单的 PHP 在 MySQL 中插入记录

php - PHP准备好的语句未执行

mysql - CodeIgniter REST Api 登录分离的数据库 20 秒以上

python - 如何在 Django 中增加 IntegerField?

python - 使用预编译的二进制文件在 Windows 上安装 gmpy2

Python2.7 打印 unicode 字符串仍然出现 UnicodeEncodeError : 'ascii' codec can't encode character . .. 序号不在范围内(128)

python - 将 POS 标签从 TextBlob 转换为 Wordnet 兼容输入