最近入門python的flask框架,官方推薦用sqlalchemy庫做爲與數據庫交互的工具。這時我在看網絡上一些文章資料時發現一個問題。python
這裏插個題外話,sqlalchemy和flask_sqlalchemy是兩回事,後者是在flask框架上對sqlalchemy進行的封裝,網上有不少比較專業的介紹文檔。但這裏,做爲多年開發後端的技術員我推薦使用sqlalchemy,緣由是更爲靈活、方便、更易上手,同時對之後接觸其餘框架也更易拓展。sql
有些跑題,下面言歸正傳。
首先出結論,flask.ext.sqlalchemy和flask_sqlalchemy是一個意思,區別是寫法不一樣,兼容性不一樣。這裏推薦使用flask.ext.sqlalchemy。數據庫
ext是python特有的拓展功能,目前,擴展必須支持Python 2.6以及Python 2.7flask
緣由:
擴展導入轉換
咱們推薦使用Flask擴展的命名空間包。這在實踐中證實是有問題的,由於存在許多不一樣的競爭命名空間包系統,而且pip會在不一樣系統之間自動切換,而且這給用戶形成了不少問題。後端
相反,咱們如今推薦命名軟件包flask_foo,而不是如今已棄用的flaskext.foo。 Flask 0.8引入了一個重定向導入系統,該系統能夠使用來自flask.ext.foo的導入,而且它將首先嚐試flask_foo,而且若是失敗,則flaskext.foo。網絡
Flask擴展應該促使用戶從flask.ext.foo而不是flask_foo或flaskext_foo導入,以便擴展能夠轉換到新的軟件包名稱而不會影響用戶。框架