これはsqlalchemy
とpg8000
に関連しています。postgresへの接続方法sqlalchemyとの最大接続?
ResultProxy
オブジェクトを閉じて、接続がプールに返されるようにどこでも読んでいます。
ローカルテストデータベースは、100
最大接続を可能にする:
$ psql -h 127.0.0.1 -U postgres
Password for user postgres:
psql (9.5.5, server 9.6.0)
WARNING: psql major version 9.5, server major version 9.6.
Some psql features might not work.
Type "help" for help.
postgres=# show max_connections;
max_connections
-----------------
100
(1 row)
次のテスト・スクリプトは、すべてのループでエンジンを作成し、ResultProxy
オブジェクトを読み取るも閉じません。それは本当に悪いです。
奇妙なことですが、too many connections
種類のエラーも生成されません。これは私にとって本当に混乱しています。 sqlalchemyはいくつかの魔法を実行しますか?またはpostgres
は実際には魔法ですか?
#!/usr/bin/env python2.7
from __future__ import print_function
import sqlalchemy
def handle():
url = 'postgresql+pg8000://{}:{}@{}:{}/{}'
url = url.format("postgres", "pass", "127.0.0.1", "5432", "usercity")
conn = sqlalchemy.create_engine(url, client_encoding='utf8')
meta = sqlalchemy.MetaData(bind=conn, reflect=True)
table = meta.tables['events']
clause = table.select()
result = conn.execute(clause)
if __name__=='__main__':
for i in range(2000):
print(i)
handle()
ありがとうございました。テスト済みで検証済み。 – lingxiao