Flask-SQLAlchemy中解决1366报错

最近在按照这本书学Flask,学到经过ORM方式操做数据库时遇到一个很奇怪的问题:
会报下面这个1366的错
...default.py:470: Warning: (1366, "Incorrect string value: '\xD6\xD0\xB9\xFA\xB1\xEA...' for column 'VARIABLE_VALUE' at row 479")html

图片描述

奇怪的地方在于我表格里的数据所有都是英语python

由于看到UTF编码,首先就想到是否是编码的问题,因而mysql

  1. 检查了本身的MySQL的配置程序员

    没发现配置有问题,都是UTF-8编码
  2. 网上搜了下相关资料sql

    发现除了MySQL中的编码配置以外,Python的编码也要是UTF-8,检查没发现问题 (以下图)
    另外就是在字符串前加上u,变成u'string'的形式,固然这招也没用

图片描述

到此我比较郁闷,遂求助于程序员好友,他看/听完描述,立刻就找到了最可疑之处 - MySQL驱动
的确,书中在建立数据库链接时,并没提到相关概念,但我以前再根据廖雪峰网站学MySQL操做时,是有这个步骤的
而后根据这个思路进行操做数据库

  1. 安装MySQL驱动(我升级过Python,因此要再装一遍)app

    本想安装MySQL官方驱动mysql-connector-python的,然而官方目前只支持到3.4
    我又懒,因此就用了另外一个驱动mysql-connector,也不知道是谁开发的……
  2. 修改代码,把网站

app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql://root:password@localhost/database'

改为编码

app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql+mysqlconnector://root:password@localhost/database'

至此,上述1366报错信息消失!spa

我推测是由于SQLAlchemy使用了默认的数据库驱动(按官方文档,是mysql-python)有问题,才致使此问题还望看到此文章的大神能验证一下个人说法

相关文章
相关标签/搜索