如何使用Django ORM将表情符号插入MYSQL 5.5及更高版本

Shr*_*rey 7 mysql django utf-8 utf8mb4

我试图将表情符号插入到我的mysql表中的某个字段中.我运行了alter命令并将整理更改为"utf8mb4_general_ci"

  ALTER TABLE XYZ MODIFY description VARCHAR(250) CHARACTER SET utf8mb4
  COLLATE utf8mb4_general_ci;
Run Code Online (Sandbox Code Playgroud)

上述查询后的表详细信息:

+-------------+--------------+---------------+--------------------+
| Column      | Type         | Character Set | Collation          |
+-------------+--------------+---------------+--------------------+
| description | varchar(250) | utf8mb4       | utf8mb4_general_ci |
+-------------+--------------+---------------+--------------------+
Run Code Online (Sandbox Code Playgroud)

在此之后,我运行查询以使用表情符号更新描述列,每次我在查询下运行时,表情符号都被"?"替换.

  update XYZ set description='a test with : ' where id = 1;
Run Code Online (Sandbox Code Playgroud)

但是当我从同一个id的select查询中打印结果时,它会显示''?' 代替表情符号.结果是:

  "a test with : ??"
Run Code Online (Sandbox Code Playgroud)

对模型文件进行必要的更改. 请接受我的道歉,因为我没有说清楚,对这件事的任何领导都表示赞赏.

Ric*_*mes 8

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        ...
        'OPTIONS': {
                    'charset': 'utf8mb4',
                    'use_unicode': True, },
    },
}
Run Code Online (Sandbox Code Playgroud)

my.cnf

[mysqld]
character-set-server=utf8mb4
default-collation=utf8mb4_unicode_ci

[client]
default-character-set=utf8mb4
Run Code Online (Sandbox Code Playgroud)