通过 SQLAlchem 2.0+ 中的 `create_engine()` 使用 PG 服务定义

问题描述 投票:0回答:1

psycopg
很好,因为它可以直接使用 pg_service.conf 文件中的数据库凭据:

import psycopg

psycopg.__version__
>>> '3.2.1'

psycopg.connect(service='myservice')
>>> <psycopg.Connection [IDLE] (host=myhost port=5432 user=myuser database=mydatabase) at 0x769e731a3170>

如何使用与 SQLAlchemy 2.0+ 中的

create_engine()
相同的服务定义?

我在这里找不到任何有关使用 PostgreSQL 服务的文档:
https://docs.sqlalchemy.org/en/20/core/engines.html#postgresql

postgresql sqlalchemy psycopg2
1个回答
0
投票

仍然可以使用带有查询参数的连接 URL,如下所示,以从现有 pg 服务定义中受益:

import sqlalchemy

sqlalchemy.__version__
>>> '2.0.34'

from sqlalchemy import create_engine
from sqlalchemy.engine.url import URL

config = dict(
    drivername="postgresql+psycopg",
    query={"service": "myservice"},
)

url = URL.create(**config)
engine = create_engine(url)

然后照常使用

engine

这是受到这个 GitHub 问题的启发:https://github.com/sqlalchemy/sqlalchemy/issues/4601

© www.soinside.com 2019 - 2024. All rights reserved.