最近入门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导入,以便扩展能够转换到新的软件包名称而不会影响用户。框架