flask mysql 1366_Flask利用pymysql出现Warning:1366的解决办法

在使用Flask和pymysql时遇到1366警告,提示字符串值编码错误。检查数据库编码为utf8mb4,my.ini配置无误,但问题依旧。解决方法是改用mysql-connector-python库,更新数据库URI配置,从而消除错误。
摘要由CSDN通过智能技术生成

写在前面

之前我在写一个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的区别

b233e727c4f7bbdf9b9ac4ba4757a9e9.png

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值