看啥推荐读物
专栏名称: 啃饼小白
努力与运动兼备~ 微信公众号: 啃饼思录:Python, Python Web,Julia,爬虫相关 啃饼小记: Java,Java Web,前端相关 QQ:2131247535
今天看啥  ›  专栏  ›  啃饼小白

Flask利用pymysql出现Warning:1366的解决办法

啃饼小白  · 简书  ·  · 2018-09-08 08:34

写在前面

之前我在写一个Flask项目,然后运行models.py文件时,出现了一个Bug,就是这个:

F:\Envs\movie\lib\site-packages\pymysql\cursors.py:170: Warning: (1366, "Incorrect string value: '\\xD6\\xD0\\xB9\\xFA\\xB1\\xEA...' for column 'VARIABLE_VALUE' at row 481")

当时我找了很多资料都是说数据库的编码出了问题,让我查看数据库的编码格式:
在查询框内输入:

show variables like '%char%';

就出现这么一大堆,但是都是utf8,记住utf8mb4是utf8的超集,也就是比它还能表示更多的字符如eimijo等,想更加了解的请点击这里:utf8mb4与utf8的区别

然后我又打开的mysql的安装包,甚至查看了它的my.ini文件,不知道它在哪可以点击这里:MySQL配置文件-my.ini,因为我的安装目录不在C盘,我的是这里:

F:\mysql\mysql-5.7.21-winx64

打开my.ini文件,我的配置是这样:

[mysqld]  
port = 3306  
basedir=F:/mysql/mysql-5.7.21-winx64
datadir=F:/mysql/mysql-5.7.21-winx64/data   
max_connections=200  
character-set-server=utf8mb4  
default-storage-engine=INNODB  
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES  
[mysql]  
default-character-set=utf8  

也是没有问题的!

后来通过查找源代码,才发现这是mysql5.7的一个Bug,但是我们还是可以解决的!

解决方法

我们之前的配置是:安装pymysql,然后导入使用

import pymysql


app.config["SQLALCHEMY_DATABASE_URI"] = "mysql+pqmysql://账号:密码@localhost/appname"

现在我们不用这个了,改用mysql-connector-python,你可以点击这里到官网进行下载,然后在你虚拟环境下面的Lib进行安装即可,也可以在Pycharm中直接进行安装。官网的地址请点击这里mysql-connector-python.

然后配置如下:

import mysql.connector

app.config["SQLALCHEMY_DATABASE_URI"] = "mysql+mysqlconnector://账号:密码@localhost/appname"

然后再运行一下models.py文件,发现这个错误就没有了!(前提是前面的数据库表编码格式已经修改正确了)

好了,本次的分享就到此为止了,如有任何问题欢迎留言交流!!!




原文地址:访问原文地址
快照地址: 访问文章快照