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