我在单独的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对象。即使关闭后,我也遇到同样的问题。
我该如何处理。
答案 0 :(得分:1)
您不应该在for循环中打开会话。在循环开始之前执行此操作,并在完成事务后将其关闭。该文档对您有帮助:when to open and close sessions