我使用SQLAlchemy(非常好的ORM,但文档不够清楚)与PostgreSQL通讯
一切都很好,直到出现一种情况,即达到最大连接限制的postgres“崩溃”原因:不再允许连接(max_client_conn)。
这种情况使我认为我做错了。经过几次实验后,我弄清楚了如何不再面对该问题,但是还剩下一些问题。
下面,您将看到没有提到问题的代码示例(在Python 3+中,PostgreSQL设置为默认设置),以及我想听听的内容最终是下列问题的答案:
连接到数据库:
from sqlalchemy.pool import NullPool # does not work without NullPool, why?
def connect(user, password, db, host='localhost', port=5432):
"""Returns a connection and a metadata object"""
url = 'postgresql://{}:{}@{}:{}/{}'.format(user, password, host, port, db)
temp_con = sqlalchemy.create_engine(url, client_encoding='utf8', poolclass=NullPool)
temp_meta = sqlalchemy.MetaData(bind=temp_con, reflect=True)
return temp_con, temp_meta
Run Code Online (Sandbox Code Playgroud)
获取会话以使用DB的功能:
from contextlib import contextmanager
@contextmanager
def session_scope():
con_loc, meta_loc = connect(db_user, db_pass, db_instance, 'localhost') …Run Code Online (Sandbox Code Playgroud)