首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使用异步SQLAlchemy引擎安全地连接到RDS数据库?

如何使用异步SQLAlchemy引擎安全地连接到RDS数据库?
EN

Stack Overflow用户
提问于 2022-05-22 17:23:07
回答 1查看 312关注 0票数 1

使用同步引擎,我们做了以下工作:

代码语言:javascript
运行
复制
engine = create_engine(
    "postgresql+psycopg2://USER:PASS@XXX.us-east-1.rds.amazonaws.com/dbname",
    pool_pre_ping=True,
    connect_args={"sslmode": "verify-full", "sslrootcert": 'path/to/cert'},
    future=True,
    echo=False,
)

但是,当使用相同的异步时,它对我不起作用:

代码语言:javascript
运行
复制
engine = create_async_engine(
    "postgresql+asyncpg://USER:PASS@XXX.us-east-1.rds.amazonaws.com/dbname",
    pool_pre_ping=True,
    connect_args={"sslmode": "verify-full", "sslrootcert": 'path/to/cert'},
    future=True,
    echo=False,
)

错误相当长,但结束时只需:

代码语言:javascript
运行
复制
File "/Users/chhenning/.pyenv/versions/cooper/lib/python3.10/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 777, in connect
    await_only(self.asyncpg.connect(*arg, **kw)),
TypeError: connect() got an unexpected keyword argument 'sslmode'

据我所知,异步As可以处理ssl。链接在这里:

https://magicstack.github.io/asyncpg/current/api/index.html#connection

是否有方法在调用create_async_engine时将参数传递给基础db驱动程序?

EN

回答 1

Stack Overflow用户

发布于 2022-05-24 14:46:39

这似乎是有效的,但我不是100%的ssl正在使用。有什么方法可以告诉异步to连接吗?

代码语言:javascript
运行
复制
import asyncio
from ssl import create_default_context

from sqlalchemy import text
from sqlalchemy.ext.asyncio import create_async_engine

async def main():

    ctx = create_default_context(
        cafile="/path/to/rds-combined-ca-bundle.pem"
    )

    engine = create_async_engine(
        "postgresql+asyncpg://postgres:XXX@XXX.us-east-1.rds.amazonaws.com/dbname",
        pool_pre_ping=True,
        connect_args={"ssl": ctx},
        future=True,
        echo=True,
    )

    async with engine.connect() as conn:
        result = await conn.execute(text("select * from t1 limit 10;"))
        print(result.fetchall())

    await engine.dispose()


asyncio.run(main())
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72339805

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档