最近入门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导入,以便扩展可以转换到新的软件包名称而不会影响用户。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。