gpt4 book ai didi

python - 使用现有的 psycopg2 连接池创建一个 sqlalchemy 引擎

转载 作者:太空狗 更新时间:2023-10-30 01:33:15 27 4
gpt4 key购买 nike

我正在使用 sqlalchemy 的声明式映射系统添加一个新的 ORM 类。我的代码库有一个现有的 psycopg2 连接池,我想重用它——我不希望使用我的 orm 类的代码有自己的池。有很多现有代码直接调用 psycopg2 池上的 get_conn,所以我也不想只替换它。

我在构建要连接的引擎时遇到问题。

pool_config = {...}
POOL = psycopg2.pool.ThreadedConnectionPool(0, 32, **pool_config)

[...]

engine = sqlalchemy.create_engine('postgresql://', pool=POOL)
Session = sqlalchemy.orm.sessionmaker(bind=engine)
...

问题出在我对 create_engine 的调用上;

  File "/home/ubuntu/environment/local/lib/python2.7/site-packages/sqlalchemy/engine/__init__.py", line 362, in create_engine
return strategy.create(*args, **kwargs)
File "/home/ubuntu/environment/local/lib/python2.7/site-packages/sqlalchemy/engine/strategies.py", line 159, in create
event.listen(pool, 'first_connect', on_connect)
File "/home/ubuntu/environment/local/lib/python2.7/site-packages/sqlalchemy/event/api.py", line 63, in listen
_event_key(target, identifier, fn).listen(*args, **kw)
File "/home/ubuntu/environment/local/lib/python2.7/site-packages/sqlalchemy/event/registry.py", line 190, in listen
dispatch_descriptor = getattr(target.dispatch, identifier)
AttributeError: 'ThreadedConnectionPool' object has no attribute 'dispatch'

是否可以通过这种方式使用我现有的池,或者我是否需要创建一个单独的连接池以供这些类使用?

最佳答案

您可以使用 custom connection function :

create_engine('postgresql+psycopg2://', creator=POOL.getconn)

关于python - 使用现有的 psycopg2 连接池创建一个 sqlalchemy 引擎,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35089043/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com