在sqlalchemy中关闭会话

时间:2018-10-16 11:04:08

标签: python session sqlalchemy

我在单独的python文件中创建了一个方法。每当我必须从数据库中获取任何数据时,我都会调用此方法。 现在,我正在执行一个for循环,其中对于每次迭代,都会对ex-

的以下方法进行db调用
 def get_method(self, identifier):
        sess = session.get_session()
        id = sess.query(..).filter(I.. == ..)
        return list(id)[0]


def get_session():
    engine = create_engine('postgresql+psycopg2://postgres:postgres@localhost/db', echo=True)
    Session = sessionmaker(engine)
    sess = Session()
    return sess

我得到FATAL: sorry, too many clients already,可能是因为我没有关闭sess对象。即使关闭后,我也遇到同样的问题。

我该如何处理。

1 个答案:

答案 0 :(得分:1)

您不应该在for循环中打开会话。在循环开始之前执行此操作,并在完成事务后将其关闭。该文档对您有帮助:when to open and close sessions