在用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"
}
如: