SQLAlchemy在建立数据库表单的编码问题

在用flsk-SQLAlchemy向数据库中建立表单时,编码方式总是:latin1_swedish_ci

而我在向表单中传中文是却报错:
sqlalchemy.exc.DataError: (pymysql.err.DataError) (1366, “Incorrect string value: ‘\xE7\xA8\x8B\xE5\xBA\x8F…’ for column ‘course’ at row 1”)

这个报错原因是因为你的数据库中的编码方式不是utf8,而导致中文输入错误

解决方法:
第一种在数据库中修改
1.查看表单的编码方式:
使用sql语句:“SHOW FULL COLUMNS FROM 表名” 来查看当前表格的编码
在这里插入图片描述
发先我的编码方式全是默认的latin,不支持中文传输,要改为utf8
2.修改他们的编码方式:

ALTER TABLE  表名 CHANGE  列名  列名  VARCHAR( 100 ) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL;

修改title的编码方式:
在这里插入图片描述
第二种方法总根本上解除:
在通过SQLAl建立表单是直接定义编码方式:
1.在SQLALCHEMY_DATABASE_URI直接加编码方式:

'mysql+pymysql://root:root@39.100.96.185:3306/si?charset=utf8'

2.在创建模板类,只需要在创建表结构时设置__table_args__

__table_args__ = {
    "mysql_charset" : "utf8"
}

如:在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值