小编Lei*_* F.的帖子

我需要使用SQLAlchemy会话吗?

SQLAlchemy的官方教程提供了使用会话系统的示例,例如:

>>> from sqlalchemy.orm import sessionmaker
>>> Session = sessionmaker(bind=engine)
Run Code Online (Sandbox Code Playgroud)

许多非官方的教程也利用了会话,但是有些根本不使用会话,而是选择了一种称为这种方法的东西:

e = create_engine('sqlite:///company.db')
conn = e.connect()
query = conn.execute("SELECT first_name FROM employee")
Run Code Online (Sandbox Code Playgroud)

当这个简单得多的系统似乎做同样的事情时,为什么根本需要会话?据我所知,官方文档并未阐明为什么这样做是必要的。

SQLAlchemy官方文档中有一个特别相关的部分:

Web应用程序是最简单的情况,因为这样的应用程序已经围绕一个一致的范围进行了构建-这是请求,它表示来自浏览器的传入请求,处理该请求以制定响应,最后交付回复给客户。因此,将Web应用程序与Session集成是将Session的范围与请求的范围链接起来的直接任务。可以在请求开始时建立会话,也可以使用惰性初始化模式来建立会话,该模式会在需要时立即建立会话。然后,请求继续进行,并使用适当的系统,其中应用程序逻辑可以按照与访问实际请求对象的方式相关的方式访问当前会话。随着请求的结束,会话也被拆除,通常通过使用Web框架提供的事件挂钩来实现。Session所使用的事务也可以在此时提交,或者应用程序可以选择显式的提交模式,仅针对那些有保证的请求进行提交,但始终始终无条件地终止Session。

...和...

一些Web框架包括一些基础结构,以帮助完成使Session的寿命与Web请求的寿命保持一致的任务。这包括与Flask Web框架结合使用的产品,例如Flask-SQLAlchemy和通常与Pyramid框架一起使用的Zope-SQLAlchemy。SQLAlchemy建议使用这些产品。

不幸的是,我仍然无法确定我是否需要使用会话,或者最后一段是否暗示着某些实现(例如Flask-SQLAlchemy)已经在自动管理会话。

我需要使用会议吗?不使用会话是否存在重大风险?因为使用Flask-SQLAlchemy,我已经在使用会话了吗?

python sqlalchemy flask-sqlalchemy

9
推荐指数
1
解决办法
1417
查看次数

移至Konopka签名VCL控件

我有一个使用Raize Components的Delphi项目的源代码(不幸的是,我不确定它的开发版本)。Raize Components被Embarcadero收购,并更名为Konopka Signature VCL Controls。因此,由于Raize不再可用,因此我无法编译该项目的源代码。

我认为最好的解决方案是将Raize换成较新的Konopka,但是我不确定如何做到这一点。Konopka是否包含在Delphi中?它是免费版吗?我可以单独购买以与免费版一起使用吗?最后,一旦我拥有Konopka,切换Raize控件将是一个简单的过程吗?

delphi components

-4
推荐指数
1
解决办法
843
查看次数