使用同步引擎,我们做了以下工作:
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,
)
但是,当使用相同的异步时,它对我不起作用:
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,
)
错误相当长,但结束时只需:
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驱动程序?
发布于 2022-05-24 14:46:39
这似乎是有效的,但我不是100%的ssl正在使用。有什么方法可以告诉异步to连接吗?
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())
https://stackoverflow.com/questions/72339805
复制相似问题