【问题标题】:Creating an SQLAlchemy engine based on psycopg3基于psycopg3创建SQLAlchemy引擎
【发布时间】:2023-01-24 02:17:51
【问题描述】:

我需要将以下代码升级为基于psycopg 版本 3 的一些等效代码:

import psycopg2
from sqlalchemy import create_engine

engine = create_engine('postgresql+psycopg2://', creator=connector)

这个 psycopg2 URL 很有魅力,但是:

import psycopg # v3.1
from sqlalchemy import create_engine

engine = create_engine('postgresql+psycopg://', creator=connector)

(我也试过'psycopg3'这个词但没有成功)

回报:

Traceback (most recent call last):

  File "/tmp/ipykernel_1032556/253047102.py", line 1, in <cell line: 1>
    engine = create_engine('postgresql+psycopg://', creator=connector)

  File "<string>", line 2, in create_engine

  File "/usr/local/lib/python3.10/dist-packages/sqlalchemy/util/deprecations.py", line 309, in warned
    return fn(*args, **kwargs)

  File "/usr/local/lib/python3.10/dist-packages/sqlalchemy/engine/create.py", line 534, in create_engine
    entrypoint = u._get_entrypoint()

  File "/usr/local/lib/python3.10/dist-packages/sqlalchemy/engine/url.py", line 661, in _get_entrypoint
    cls = registry.load(name)

  File "/usr/local/lib/python3.10/dist-packages/sqlalchemy/util/langhelpers.py", line 343, in load
    raise exc.NoSuchModuleError(

NoSuchModuleError: Can't load plugin: sqlalchemy.dialects:postgresql.psycopg

那么,如何正确地创建一个基于psycopg (v3.x) 的SQLAlchemy 引擎呢?

我的sqlalchemy 版本是:'1.4.35'(试过版本1.4.40 但面临AttributeError: module 'sqlalchemy' has no attribute 'dialects' 错误)。

psycopg3 文档:https://www.psycopg.org/psycopg3/docs/api/
sqlalchemy 文档:https://docs.sqlalchemy.org/en/14/core/engines.html

【问题讨论】:

标签: python sqlalchemy psycopg2 psycopg3


【解决方案1】:

SQLAlchemy 在 1.4.x 系列中不支持 psycopg3。 + 符号之后的部分是 sqlalchemy.dialects.postgresql.{engine} 中的一个包,其中 engine 是 psycopg2、asyncpg 或其他。

其他方言的工作方式相同。

但是 1.4.x 系列中没有 psycopg 和 psycopg3 驱动程序。

【讨论】:

    猜你喜欢
    • 2021-12-20
    • 2015-09-04
    • 1970-01-01
    • 2016-07-04
    • 2019-11-07
    • 2017-07-10
    • 1970-01-01
    • 2017-10-04
    • 1970-01-01
    相关资源
    最近更新 更多