django 操作MySQL 中文乱码_Django 连接mysql数据库中文乱码

本文介绍了在Django中遇到的MySQL中文乱码问题的解决步骤,涉及PyMySQL配置、MySQL数据库设置以及Navicat连接编码的调整,通过修改connections.py文件、my.cnf配置、Navicat设置及数据重置来确保中文正常显示。
摘要由CSDN通过智能技术生成

版本:CentOS6.8 python3.6.4 django1.8.2 数据库pymysql

我使用的终端是CentOS终端,CentOS桌面版安装的pycham,windows使用Navicat连接mysql数据库。

我遇到的情况大致这样,在CentOS终端进入mysql,然后查询表,中文显示没问题,在Navicat设置了utf-8,中文显示也没问题,但是当我在虚拟环境执行python manage.py shell,使用这个shell查询,中文就乱码了。

乱码第一时间想到的是编码问题,在这里省略一万字,通过各种查找资料,修改配置文件等等,然后结合各种资料信息,终于解决了这个问题!直接进入解决方法!

1:执行pip install PyMySQL ,查找出PyMySQL的安装位置,然后执行cd命令进入,cd /root/.virtualenvs/Cole_py3/lib/python3.6/site-packages/pymysql(这里我的安装目录);

2:在这个目录下有一个connections.py文件,直接进入编辑,

vim connections.py;

3:进入编辑connections.py后,shift +:进入命令行,输入/charset命令查找,打到def ini(),如下图所示:

23f1bc2a8a165dedaa738e5c66626810.png 

把charset=’ ‘改为charset=’utf8’;保存退出。

4:接下来在终端运行mysql,执行命令mysql -uroot -p;

5:运行数据库后,执行命令show variables like “%char%”,如图所示;

d8c00c9a8bffaaa04a84f8e2fc131de0.png 

有几个变量值是latin1的,要把它们改成utf8;网上有资料说执行这个命令

set character_set_client=utf8;

这个执行完之后的确是可以修改,但只是临时的,退出数据库重新登陆又恢复原来的数据,要把它永久修改要执行以下;

6:vim /etc/my.cnf,如下图所示:

ea3491b3339f3ab464e2037476017c57.png

[client]

default-character-set=utf8

[mysql]

default-character-set=utf8

[mysqld]

collation-server = utf8_unicode_ci

init-connect='SET NAMES utf8'

character-set-server = utf8

保存退出!

7:再去mysql执行命令show variables like “%char%”; ,你会看到如下图所示:

860d328780dcf390058a048706c97ead.png

修改成功!

8:如果有用Navicat的话,要去把编码改为自动;右击数据库,选择连接属性——高级——在编码那里选择自动。

9:最后一步!你现在运行python manage.py shell或者运行mysql,然后查询数据,显示出来还是会乱码的!!!因为这些数据是你之前输入进去的,所以必须要把这些数据删除,然后重新插入!完成!

Navicat

741a5decfb3cc74432f4ed4a028ea0d6.png

mysql

1ef41044de1acc198d52244854a6d53e.png

python manage.py shell

8c2de3656c674e36e1c5a049428c9db6.png

改完重启mysql数据库

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值