flask_sqlalchemy 乱码问题

Posted 照夜白

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了flask_sqlalchemy 乱码问题相关的知识,希望对你有一定的参考价值。

简言之, /etc/my.conf

default_character_set=utf8 配置成了 default_character_set=utf-8

继而 sqlalchemy 创建表使用的字符编码格式是 latin1, 如下

| log   | CREATE TABLE `log` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `record_id` int(11) DEFAULT NULL,
  `command` varchar(50) DEFAULT NULL,
  `sn` varchar(50) DEFAULT NULL,
  `hostname` varchar(100) DEFAULT NULL,
  `idc` varchar(50) DEFAULT NULL,
  `ip` varchar(50) DEFAULT NULL,
  `iloip` varchar(50) DEFAULT NULL,
  `result` text,
  `req_time` datetime DEFAULT NULL,
  `resp_time` datetime DEFAULT NULL,
  PRIMARY KEY (`id`),
  KEY `record_id` (`record_id`)
) ENGINE=MyISAM AUTO_INCREMENT=2 DEFAULT CHARSET=latin1 |

所以即使创建引擎时设置了character 为 utf8, 存储是也是乱码, 问题还是出在 mysql server 的配置.

SQLALCHEMY_DATABASE_URI = "mysql+pymysql://work:[email protected]:3306/work?charset=utf8"

另外还要把已经建立的 database 的 character 也改成 utf8: alter database clubot character set utf8;

删掉了已有的表, 新建后 OK.

以上是关于flask_sqlalchemy 乱码问题的主要内容,如果未能解决你的问题,请参考以下文章

使用 flask_sqlalchemy 将 HTML 表单中的日期插入 SQlite 数据库

ModuleNotFoundError:没有名为“flask_sqlalchemy”的模块

from flask_sqlalchemy import SQLAlchemy 无法创建数据库表,代码无报错,代码如下,python版本是3.5

python flask_Sqlalchemy管理数据库

使用flask_sqlalchemy“ImportError:无法导入名称”

Flask 分页的简单用法 / flask_sqlalchemy /无刷新翻转页面(原创)