为什么在SQL Alchemy中使用autocommit是不好的做法?

时间:2015-08-31 17:41:20

标签: python sqlalchemy

官方手册说使用自动提交不是一般用途: http://docs.sqlalchemy.org/en/rel_1_0/orm/session_transaction.html

但我在我的代码中得到了ORM对象(表值),在代码中我使用了这个模型的一些值,这意味着在每次使用模型(类)的成员之后我应该创建session.commit()?我认为在我的程序中启用自动提交很容易。

class DBInterface(object):
def __init__(self):
    engine = create_engine("...", encoding='utf8', echo=False)
    Base.metadata.create_all(engine)
    Session = sessionmaker(bind=engine)
    self.session = Session()

def get_project_info(self, project):
    query = self.session.query(Projects)
    query = query.filter(Projects.name == project).all()
    if len(query) > 1:
        raise LookupError('...')
    result = query[0]
    self.session.commit() 
    return result

获取价值 x = get_project_info(...) //这里我们还没有关闭交易(交易中闲置)

print(x.foo)//现在我们打印成员的价值,现在我们有(交易中闲置) // self.session.commit()//我应该在每次访问后使用瘦吗?这太疯狂了

我该怎么办?

0 个答案:

没有答案