2019独角兽企业重金招聘Python工程师标准>>>
写在前面
之前我在写一个Flask项目,然后运行models.py文件时,出现了一个Bug,就是这个:
F:\book\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+pymysql://账号:密码@localhost/appname"
现在我们不用这个了,改用mysql-connector-python,你可以点击这里到官网进行下载,然后在你虚拟环境下面的Lib进行安装即可,也可以在Pycharm中直接进行安装。官网的地址请点击这里mysql-connector-python.
然后配置如下:
import mysql.connector
app.config["SQLALCHEMY_DATABASE_URI"] = "mysql+mysqlconnector://账号:密码@localhost/appname"
然后再运行一下models.py文件,发现这个错误就没有了!(前提是前面的数据库表编码格式已经修改正确了)
好了,本次的分享就到此为止了,如有任何问题欢迎留言交流!!!