python - 如何使用 sqlalchemy 连接池创建 session ?

标签 python mysql session sqlalchemy connection-pooling

<分区>

我在同时使用引擎、连接池和 session 时遇到问题。我想要做的是创建一个应用程序范围的引擎和池。然后随时从连接池创建 session 。下面是我的代码示例:

import sqlalchemy.pool as pool
engine = createEngine(pool_size, pool.QueuePool)
Session = sessionmaker()
def getConnection():
    try:
        return engine.connect()
    except:
        return False
mypool = pool.QueuePool(getConnection(), max_overflow, pool_size)
conn = mypool.connect()
session = Session(bind=conn)
result = session.query(Models.Features).all()

在上面的代码中,session.query() 给出了错误“error:'function' object has no attribute 'contextual_connect.

我在页面 https://docs.sqlalchemy.org/en/latest/orm/session_basics.html 中使用了标题为“使用替代参数创建临时 session 对象”下的段落作为引用。这是我使用的上述页面的代码示例:

# at the module level, the global sessionmaker,
# bound to a specific Engine
Session = sessionmaker(bind=engine)

# later, some unit of code wants to create a
# Session that is bound to a specific Connection
conn = engine.connect()
session = Session(bind=conn)

在上面的示例中,他们将 session 与连接绑定(bind)在一起。我想知道在使用session的时候是否需要使用connectionpool。如果是,那么如何创建连接池并将 session 与从池中获得的连接绑定(bind)。

最佳答案

您没有正确调用 engine.connect() 方法。如果你像这样添加括号:

...
mypool = pool.QueuePool(getConnection(), max_overflow, pool_size)
conn = mypool.connect()
session = Session(bind=conn)
...

它应该可以正常工作。

关于python - 如何使用 sqlalchemy 连接池创建 session ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53869869/

相关文章:

python - 在列表中查找匹配和不匹配的项目

python - 独立于其他命令每 5 分钟运行一部分代码

php - 使用php文件第二次更新数据库时出错

python - Django 请求有时不包含通过 SSL 的 session

php - session ID 与 token

java - 实体对象持久化时出现空指针异常

python - 排除 Pandas 数据框中索引行的最有效方法

python - 提前退出 multiprocessing.Pool.map (在子进程中引发不起作​​用)

mysql - 创建用于删除的 MySQL 触发器时出错

mysql - JOIN 在 SQL 中有效,但在 Drupal 中无效