社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  DATABASE

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

啃饼小白 • 5 年前 • 583 次点击  

写在前面

之前我在写一个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文件,发现这个错误就没有了!(前提是前面的数据库表编码格式已经修改正确了)

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


今天看啥 - 高品质阅读平台
本文地址:http://www.jintiankansha.me/t/uy3X2OYRP5
Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/23735
 
583 次点击