AWS 最近推出了数据 API。这简化了创建 Lambda 函数,通过允许 API 调用而不是直接数据库连接消除了额外复杂性的必要性。
我正在尝试在 AWS Lambda 函数中使用 SQLAlchemy,我真的很想利用这个新 API。
有谁知道是否对此有任何支持,或者是否会对此提供支持?
或者,创建一个新引擎来支持这一点有多困难?
AWS 最近推出了数据 API。这简化了创建 Lambda 函数,通过允许 API 调用而不是直接数据库连接消除了额外复杂性的必要性。
我正在尝试在 AWS Lambda 函数中使用 SQLAlchemy,我真的很想利用这个新 API。
有谁知道是否对此有任何支持,或者是否会对此提供支持?
或者,创建一个新引擎来支持这一点有多困难?
SQLAlchemy 将数据库驱动程序称为“方言”。因此,如果您将 SQLAlchemy 与 PostgreSQL 一起使用并使用 psycopg2 作为驱动程序,那么您使用的是 PostgreSQL 的 psycopg2 方言。
我正在寻找与您相同的东西,但没有找到现有的解决方案,所以我自己编写并发布了它。为了使用 AWS Aurora RDS 数据 API,我为它创建了一个 SQL 方言包sqlalchemy-aurora-data-api。这反过来又要求我为 Aurora Data API 编写与DB-API兼容的 Python DB 驱动程序aurora-data-api。使用安装后pip install sqlalchemy-aurora-data-api
,您可以像这样使用它:
from sqlalchemy import create_engine
cluster_arn = "arn:aws:rds:us-east-1:123456789012:cluster:my-aurora-serverless-cluster"
secret_arn = "arn:aws:secretsmanager:us-east-1:123456789012:secret:MY_DB_CREDENTIALS"
engine = create_engine('postgresql+auroradataapi://:@/my_db_name',
echo=True,
connect_args=dict(aurora_cluster_arn=cluster_arn, secret_arn=secret_arn))
with engine.connect() as conn:
for result in conn.execute("select * from pg_catalog.pg_tables"):
print(result)
作为替代方案,如果你想要更像 Records 的东西,你可以试试 Camus https://github.com/rizidoro/camus。