在Django中创建数据库连接池。连接池通过使用SQLAlchemy's connection pooling和django-postgrespool2连接到PostgreSQL数据库
运行以下代码行poolConnection = dbPool.connect()
时会抛出'psycopg2.extensions.connection' object is not callable
。打印dbPool
对象和类型显示<sqlalchemy.pool.impl.QueuePool object at 0x00000171832A72B0> <class 'sqlalchemy.pool.impl.QueuePool'>
创建到PostgreSQL数据库的连接并创建连接池的Database helper类:
import psycopg2
from sqlalchemy import pool
import traceback
dbPool = None
class DbPoolHelper:
def ensurePoolCreated(self):
global dbPool
if dbPool != None:
return
self.createPool()
def dbConnect(self):
dbConnection = psycopg2.connect(user="...", password="...", dbname="...", host="...",port="...")
return dbConnection
def createPool(self):
dbConnection = self.dbConnect()
global dbPool
dbPool = pool.QueuePool(dbConnection, max_overflow=10, pool_size=5)
def execute(self, sql, sqlParams):
try:
global dbPool
self.ensurePoolCreated()
poolConnection = dbPool.connect()
cursor = poolConnection.cursor()
cursor.execute(sql, sqlParams)
poolConnection.commit()
result = cursor.fetchall()
cursor.close()
poolConnection.close()
return result
except Exception as e:
print(e)
return e
代码使用DbPoolHelper
通过使用execute
方法获取一些数据,并提供一些sql和sql参数作为参数:
def poolTest():
sql = "SELECT * FROM sysproductcontainers;"
sqlParams = ()
db = DbPoolHelper()
result = db.execute(sql, sqlParams)
为什么代码抛出'psycopg2.extensions.connection' object is not callable
请记住,我对Python和Django非常陌生。因此,对于一些Python和/或Django开发人员来说,我可能遗漏了一些显而易见的东西
谢谢
根据^{} 文档,第一个参数应该是“返回DB-API连接对象的可调用函数”
您已经将调用函数的结果作为第一个参数而不是函数本身传递给了
QueuePool
对象。删除括号以解决问题:相关问题 更多 >
编程相关推荐