flask-sqlalchemy进行mysql数据库操作时,插入中文数据报错

在ubuntu系统下,当我要插入中文数据时,系统报错:

Warning: (1366, "Incorrect string value: '\xD6\xD0\xB9\xFA\xB1\xEA...'for column 'VARIABLE_VALUE' at row 345"

经查阅多方资料,发现是数据库编码问题,当mysql执行create database movie;操作时,默认编码是latin1,我们要改成utf8的。

于是进行了下述措施:

删掉之前建的数据库:drop database movie;
重建数据库:create database movie default character set utf8;
这样子做后,插入中文数据就不会报错了。

如果还报错,再继续下述操作:

  1. 将SQLALCHEMY_DATABASE_URI改成如下,注意加上?charset=utf8mb4
SQLALCHEMY_DATABASE_URI='mysql://[user_name]:[password]@[host]/[database_name]?charset=utf8mb4'
  1. db = SQLAlchemy(app)改成如下:
db = SQLAlchemy(app,use_native_unicode="utf8")

PS:

如果要让mysql执行create database 时默认编码改成utf8,可进行下述操作:

  1. cd /etc/mysql
  2. sudo vim my.conf
  3. 添加下述操作
[mysqld]
character_set_server = utf8
[client]
default-character-set = utf8
[mysql]
default-character-set = utf8
  1. 保存文件后退出。之后重启mysql服务:
service mysql restart
  1. 之后,登录mysql后再执行create database movie; 就默认编码是utf8了。

再PS:

登录mysql命令:mysql -u用户名 -p密码
退出登录:\q

如果上述表述有任何问题,欢迎提出指正!感谢!


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部