在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 -p12345create database catchat;
flask can"t connect sqlalchemy 最下面的那個答案。
樓主,我也遇到這個問題,但是照你說的弄了也沒搞定。我的問題在這:?Flask創建數據表出錯 - Python - 知乎,能幫我看看么。十分感謝!
解決了最好!遇到相同的問題,一切準備就緒之後不能使用create_all()命令新建資料庫。報錯找不到資料庫。手動創建資料庫後,執行create_all()命令,新建數據表成功。drop_all()刪除操作也成功。可能是不能新建資料庫,但可以在又資料庫的前提下新建數據表。。。以上!本人python版本3.4.4(X64)flask 0.10.1
推薦閱讀: