Database 使用SQLAlchemy会话和事务
在学习SQLAlchemy时,我遇到了两种处理SQLAlchemy会话的方法。 一个是在初始化数据库时全局创建一次会话,如下所示:Database 使用SQLAlchemy会话和事务,database,orm,transactions,sqlalchemy,Database,Orm,Transactions,Sqlalchemy,在学习SQLAlchemy时,我遇到了两种处理SQLAlchemy会话的方法。 一个是在初始化数据库时全局创建一次会话,如下所示: DBSession = scoped_session(sessionmaker(extension=ZopeTransactionExtension())) 并在随后的所有我的请求(所有我的插入/更新)操作中导入此DBSession实例。 执行此操作时,我的DB操作具有以下结构: with transaction manager: for each_ite
DBSession = scoped_session(sessionmaker(extension=ZopeTransactionExtension()))
并在随后的所有我的请求(所有我的插入/更新)操作中导入此DBSession实例。
执行此操作时,我的DB操作具有以下结构:
with transaction manager:
for each_item in huge_file_of_million_rows:
DBSession.add(each_item)
//More create, read, update and delete operations
我不会在任何地方提交、刷新或回滚,前提是我的Zope事务管理器为我处理它
(在交易结束时提交,如果失败则回滚)
第二种方式,也是网络上最常提到的方式是:
创建一次DBSession,就像
DBSession=sessionmaker(bind=engine)
and then create a session instance of this per transaction:
session = DBSession()
for row in huge_file_of_million_rows:
for item in row:
try:
DBsesion.add(item)
//More create, read, update and delete operations
DBsession.flush()
DBSession.commit()
except:
DBSession.rollback()
DBSession.close()
请给我指一下正确的方向。提前谢谢。这里有一个非常一般的答案,并警告我对zope不太了解。只是一些简单的数据库启发法。希望能有帮助
SQLAlchemy
会话:
首先,看看他们自己的解释python
程序的会话
对象中,当然也在数据库事务中。有多少空间?用你提供的信息很难说;这将取决于查询,取决于数据库
你可以很容易地用分析器来估计它。要考虑到,如果资源耗尽,一切都会变慢(或停止)
orm
提供的,比如SQLAlchemy