SQLAlchemy在不使用ORM或连接时是否创建线程?

时间:2012-03-05 18:32:56

标签: sql sqlalchemy

我们仅将SQLALchemy用于将与DB无关的代码转换为sql语句(通过编译和显式使用方言)。我们还没有使用ORM,也没有通过create_engine创建引擎。

我相信以这种方式使用它并不会使SQLA在后台创建任何线程或数据库连接。这是真的吗?

1 个答案:

答案 0 :(得分:0)

SQLAlchemy不会产生线程,并且会在线程中执行调用特定操作的所有操作。

即使没有产生任何线程,您可能遇到面向同步的怪癖的地方,在极少数情况下,Python的GC清理线程会对特定对象进行垃圾收集。例如,如果你使用Connection对象,没有关闭它,然后让它超出范围,如果碰巧被gc线程收集垃圾,你可能会看到DBAPI connection.rollback()在GC中调用的方法,因为SQLAlchemy在垃圾收集器收集它们时清理连接。如果DBAPI遇到问题,该问题的解决方案是确保您主动关闭ConnectionSession个对象等资源。