可以将SQLAlchemy与AWS RDS Data API一起使用吗?

时间:2019-06-08 16:23:55

标签: python amazon-web-services sqlalchemy amazon-rds-aurora

AWS最近启动了Data API。这简化了Lambda函数的创建,通过允许API调用而不是直接数据库连接,消除了额外复杂性的必要性。

我正在尝试在AWS Lambda函数中使用SQLAlchemy,我真的很想利用这个新API。

有人知道对此是否有任何支持,或者是否正在为此提供支持?

或者,创建一个新的引擎来支持这一点有多困难?

谢谢。

2 个答案:

答案 0 :(得分:0)

或者,如果您想要更多类似Records的产品,可以尝试Camus https://github.com/rizidoro/camus

答案 1 :(得分:0)

SQLAlchemy调用数据库驱动程序"dialects"。因此,如果将SQLAlchemy与PostgreSQL一起使用,并使用psycopg2作为驱动程序,那么您将使用PostgreSQL的psycopg2方言。

我一直在寻找与您相同的东西,但是找不到现有的解决方案,因此我自己编写并发布了解决方案。为了使用AWS Aurora RDS Data API,我为其创建了一个SQL方言包sqlalchemy-aurora-data-api。反过来,这需要我为Aurora Data API DB-API编写aurora-data-api兼容的Python DB驱动程序。使用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)