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)有問題,才致使此問題還望看到此文章的大神能驗證一下個人說法

相關文章
相關標籤/搜索