我们仅将SQLALchemy用于将与DB无关的代码转换为sql语句(通过编译和显式使用方言)。我们还没有使用ORM,也没有通过create_engine创建引擎。
我相信以这种方式使用它并不会使SQLA在后台创建任何线程或数据库连接。这是真的吗?
答案 0 :(得分:0)
SQLAlchemy不会产生线程,并且会在线程中执行调用特定操作的所有操作。
即使没有产生任何线程,您可能遇到面向同步的怪癖的地方,在极少数情况下,Python的GC清理线程会对特定对象进行垃圾收集。例如,如果你使用Connection
对象,没有关闭它,然后让它超出范围,如果碰巧被gc线程收集垃圾,你可能会看到DBAPI connection.rollback()
在GC中调用的方法,因为SQLAlchemy在垃圾收集器收集它们时清理连接。如果DBAPI遇到问题,该问题的解决方案是确保您主动关闭Connection
和Session
个对象等资源。