首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >flask-sqlalchemy或sqlalchemy

flask-sqlalchemy或sqlalchemy
EN

Stack Overflow用户
提问于 2013-01-16 01:51:57
回答 6查看 37.2K关注 0票数 125

我在flask和sqlalchemy方面都是新手,我刚刚开始开发一个flask应用程序,现在我正在使用sqlalchemy。我想知道使用flask-sqlalchemy比使用sqlalchemy有什么显著的好处。我在http://packages.python.org/Flask-SQLAlchemy/index.html中找不到足够的动机,或者可能我不理解它的价值!我将非常感谢你的澄清。

EN

回答 6

Stack Overflow用户

发布于 2016-11-14 04:27:51

Flask-SQLAlchemy的主要功能是与Flask应用程序正确集成-它创建和配置引擎、连接和会话,并将其配置为与Flask应用程序一起工作。

这个设置相当复杂,因为我们需要创建scoped session,并根据Flask应用程序的请求/响应生命周期正确处理它。

在理想情况下,这将是Flask-SQLAlchemy的唯一特性,但实际上,它增加了一些东西。有关更多信息,请查看the docs。或者看看这篇概述了它们的博客文章:Demystifying Flask-SQLAlchemy (更新:原文暂时不可用,有一个snapshot on webarchive)。

当我第一次使用Flask和SQLAlchemy时,我不喜欢这种开销。我检查并从扩展中提取了会话管理代码。这种方法是有效的,尽管我发现很难正确地进行这种集成。

因此,更简单的方法(我正在参与的另一个项目中使用了这种方法)是直接插入Flask-SQLAlchemy,并且不使用它提供的任何附加功能。您将拥有db.session,并且可以像使用纯SQLAlchemy安装程序一样使用它。

票数 86
EN

Stack Overflow用户

发布于 2016-11-14 05:37:17

Flask-SQLAlchemy为你提供了许多很好的额外功能,否则你最终会使用SQLAlchemy来实现自己。

使用Flask-SQLAlchemy的积极方面

  1. Flask_SQLAlchemy为你处理会话配置,设置和拆卸。
  2. 为你提供了声明性的基本模型,使查询和分页更容易
  3. 后端特定的设置。for SQLAlchemy扫描已安装的库以获得统一码支持,如果失败,自动使用SQLAlchemy统一码。
  4. 有一个名为apply_driver_hacks的方法,它自动设置合理的默认值,如MySQL池大小
  5. 有很好的内置方法create_all()和drop_all()用于创建和删除所有表。对于测试和在python命令行中很有用,如果您做了一些愚蠢的事情,get
  6. 会给出get_or_404()而不是get()和find_or_404()而不是> http://flask-sqlalchemy.pocoo.org/2.1/queries/

上的()代码示例

自动设置表名。Flask-SQLAlchemy自动设置表名转换ClassName > class_name这可以通过设置__tablename__类列表项来覆盖

使用Flask-SQLAlchemy的负面影响

如果你需要的话,使用Flask-SQLAlchemy的

  1. 会给从Flask迁移到金字塔增加额外的困难。这主要是由于Flask_SQLAchemy.
  2. Using Flask-SQLAlchemy上的自定义声明式基本模型,您可能会使用一个社区比SQLAlchemy小得多的包,我不能轻易地在短期内将其从活动开发中删除。
  3. Flask-SQLAlchemy有一些不错的附加组件,如果您不知道它们在那里,可能会让您感到困惑。
票数 25
EN

Stack Overflow用户

发布于 2013-03-04 11:18:24

老实说,我看不出有什么好处。IMHO,Flask-SQLAlchemy创建了一个你并不真正需要的附加层。在我们的例子中,我们有一个相当复杂的Flask应用程序,它有多个数据库/连接(主-从),同时使用ORM和Core,其中,我们需要控制我们的会话/ DB事务(例如,dryrun vs commit模式)。Flask-SQLAlchemy添加了一些额外的功能,比如自动销毁会话,为你假设一些通常不是你需要的东西。

票数 22
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14343740

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档