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
仍然可以使用带有查询参数的连接 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