Flask-SQLAlchemy中解决1366报错

本文记录了一次使用Flask框架结合ORM操作数据库时遇到的1366错误,并详细描述了解决过程,最终通过更换MySQL驱动解决了问题。

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

图片描述

奇怪的地方在于我表格里的数据全部都是英语

因为看到UTF编码,首先就想到是不是编码的问题,于是

  1. 检查了自己的MySQL的配置

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

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

图片描述

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

  1. 安装MySQL驱动(我升级过Python,所以要再装一遍)

    本想安装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报错信息消失!

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

当你尝试使用 `pip install flask-sqlalchemy` 和 `pip install pymysql` 安装这两个Python库时,可能会遇到一些报错。这里列举几种常见的问题及解决方法: 1. **权限问题**: - 如果你在没有管理员权限的环境下运行安装命令,可能会因为权限不足而失败。解决方案是使用sudo(Linux/Mac)或以管理员身份运行(Windows)。 2. **版本冲突**: - 如果已安装的其他依赖库存在版本不兼容的问题,可能会影响这两个库的安装。检查是否有其他库的版本过旧或过高,尝试更新或锁定特定版本。 3. **网络连接问题**: - 如果你的网络连接不稳定,pip可能无法下载库文件。确保网络畅通并尝试断开重连。 4. **包已被安装**: - 如果Flask-SQLAlchemy或pymysql已经被安装,且当前版本满足需求,pip可能不会执行安装。可以先尝试卸载再重新安装。 5. **Python环境不一致**: - 确保你正在使用的Python环境与pip命令关联的是同一个。有时,如果在虚拟环境中,可能会导致错误。 遇到具体报错信息后,通常会包含错误代码和详细描述,例如ModuleNotFoundError、DependencyError等,根据这些信息来确定问题所在。例如,你可以查看错误消息中的提示,寻找如"Module 'flask_sqlalchemy' has no attribute '__version__'"这样的信息,这可能意味着你尝试安装的版本与现有库不兼容。 相关问题-- 1. 常见的pip安装错误有哪些类型? 2. 如何根据报错信息解决网络连接问题? 3. 如何检查Python环境和pip之间的关联?
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值