標籤:

在python3下怎樣用flask-sqlalchemy對mysql資料庫操作?

網上很多都是python2的,例子都是sqlite的,按別人說的更改database_uri是沒法操作mysql資料庫的。。

在python3下怎樣用flask-sqlalchemy對mysql資料庫操作啊, 貌似mysqldb不支持python3

求各位大神解答~


唔,貌似題主問題已經解決了,挺好的。我還是答一下,給後續需要的新手一點幫助。

這個問題經常難道新手一下,因為大部分教程里(包括經典的《Flask Web開發》一書),告訴了我們如何使用flask-sqlalchemy操作sqlite,但在生產環境(線上網站)上,我們肯定是使用MySQL或其他,而大部分的教程里,又告訴我們flask-sqlalchemy使用MySQL的方式是:

mysql://username:password@server/db

結果我們照葫蘆畫瓢的來一下,發現壓根不行,寫好的網站一跟資料庫沾邊就報錯。

Python和MySQL是「兩個國家的人」,他們互不相通,因而需要一個中間代理,讓雙方互通有無,跟翻譯一樣(這比喻不準確,但足夠你明白意思就行)。翻譯又有很多選擇,不同的翻譯各有特色。

題主解決問題選擇的翻譯是「flask-mysqldb」,其背後的主子是「MySQL-python」。恩,說到這裡你應該知道,「flask-xxx」這樣的包都是對背後主子進行了適合Flask封裝的插件,跟包子皮一樣,裡面的餡才是重點,「flask-mysqldb」的餡是「MySQL-python」。

而我要推薦的是另一個翻譯:PyMySQL,這玩意的好處是可以做非同步(「MySQL-python」也可以,個人口味罷了),簡而言之,網站訪問量大了就需要考慮非同步,現在別管這是啥子。這玩意的安裝方式是:

pip install PyMySQL

之後,資料庫連接由:

mysql://username:password@server/db

改為

mysql+pymysql://username:password@server/db

就可以了。

文檔參考:MySQL

SQLAlchemy 1.0 Documentation


使用pymysql來連接資料庫就可以了!!


python3 沒用過,因為mac自帶還是2.7

關於你說得python2不能用,你可以用下面的demo跑下:

cfrs2005/flask_blog · GitHub

其次,注意安裝mysql , pip 安裝mysql-python相關支持類庫


直接上mysql很有可能會出現這樣的問題:

sqlalchemy.exc.OperationalError: (_mysql_exceptions.OperationalError) (1049, "Unknown database "database"")y

這個問題很好解決。

According to the following code:

app.config["SQLALCHEMY_DATABASE_URI"] = "mysql://root:12345@localhost/catchat"

Your database is "catchat".Please create it.

mysql -u root -p12345

create database catchat;

flask can"t connect sqlalchemy 最下面的那個答案。


樓主,我也遇到這個問題,但是照你說的弄了也沒搞定。

我的問題在這:?Flask創建數據表出錯 - Python - 知乎,能幫我看看么。

十分感謝!


解決了最好!

遇到相同的問題,一切準備就緒之後不能使用create_all()命令新建資料庫。報錯找不到資料庫。

手動創建資料庫後,執行create_all()命令,新建數據表成功。drop_all()刪除操作也成功。

可能是不能新建資料庫,但可以在又資料庫的前提下新建數據表。。。

以上!

本人python版本3.4.4(X64)

flask 0.10.1


推薦閱讀:

微框架 Python Flask 和 Ruby Sinatra,哪個更值得推薦?

TAG:Python | MySQL | Flask |