如何使用 Django 2.* mysqlclient 在 MySQL 数据库中设置排序规则?

Posted

技术标签:

【中文标题】如何使用 Django 2.* mysqlclient 在 MySQL 数据库中设置排序规则?【英文标题】:How to set Collation in MySQL database with Django 2.* mysqlclient? 【发布时间】:2018-08-25 06:14:36 【问题描述】:

我需要使用 Django 2.* 为 mysql 表设置默认排序规则,我使用 mysqlclient,我的设置是:

DATABASES =    
    'default': 
        'ENGINE': 'django.db.backends.mysql', 
        'NAME': '',
        'USER': '',
        'PASSWORD': '',
        'HOST': 'localhost',
        'PORT': '3306',
        'OPTIONS': 
            'charset': 'utf8mb4',
        ,
    


'charset': 'utf8mb4',

此参数似乎无法正常工作,并且 DB utf8 中的表。虽然我想手动将排序规则设置为 utf8mb4_general_ci

将不胜感激任何线索。

【问题讨论】:

【参考方案1】:
'default': 
    'ENGINE': 'django.db.backends.mysql', 
    'NAME': '',
    'USER': '',
    'PASSWORD': '',
    'HOST': 'localhost',
    'PORT': '3306',
    'OPTIONS': 
        'init_command': 'ALTER DATABASE <YOUR_DB_NAME> CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci',
    ,

感谢https://***.com/a/6115705/2891421

【讨论】:

请注意,init_command 在每个新连接上运行 - 如果不需要更改,运行ALTER DATABASE CHARACTER SET 是否便宜?这似乎是不明智的,使用 RunSQL 的一次性迁移似乎是一种更安全的替代方案docs.djangoproject.com/en/dev/ref/migration-operations/#runsql

以上是关于如何使用 Django 2.* mysqlclient 在 MySQL 数据库中设置排序规则?的主要内容,如果未能解决你的问题,请参考以下文章

如何检查 Django 版本

如何使用 django 服务 HTTP/2 协议

如何在django-select2中使用django-filter?

如何在前端使用 django-tables2 编辑数据?

Django-tables2 - 如何在 TemplateColumn 中使用自定义过滤器

使用过滤器时如何使用 django_tables2 进行搜索