连接池耗尽 psycopg2

h.z*_*zak 5 python psycopg2 pandas

我对 Postgresql psycopg2 有问题。我收到错误:

异常执行时出错:连接池已耗尽

我的代码:

from psycopg2 import pool
import pandas.io.sql as sqlio
import pandas as pd
db = pool.ThreadedConnectionPool(5, 100,host=POSTGRES['host'],
database=POSTGRES['database'],user=POSTGRES['username'],
password=POSTGRES['password'],port=POSTGRES['port'])


try:
    sql = "select * from role"  
    data = sqlio.read_sql_query(sql, db.getconn())
    return data.to_json(orient='records')
except Exception as e:
    print "error in executing with exception: ", e
    return pd.DataFrame({'empty' : []})
Run Code Online (Sandbox Code Playgroud)

这个请求应该只返回 5 行,但我收到这个错误。

你知道为什么我会收到这个错误吗?

我的 Postgresql 数据库(中型实例)部署在公共云上。

先感谢您

Sam*_*son 8

看起来您需要在某个时候将连接返回到池中,请参阅:

http://initd.org/psycopg/docs/pool.html#psycopg2.pool.AbstractConnectionPool.putconn

即类似:

sql = "select * from role"  
try:
    conn = db.getconn()
    try:
        data = sqlio.read_sql_query(sql, conn)
    finally:
        pool.putconn(conn)
    return data.to_json(orient='records')
except Exception as e:
    print "error in executing with exception: ", e
    return pd.DataFrame({'empty' : []})
Run Code Online (Sandbox Code Playgroud)