如何使用 SQLAlchemy 为 Aurora Serverless 和 DataAPI 生成 python 数据库模型?

How to generate python db model with SQLAlchemy for Aurora Serverless and DataAPI?

我一直在试图弄清楚是否有任何方法可以为通过 DataAPI 使用的 Aurora Serverless (Postgresql) DB 提供 ORM 功能(尤其是代码模型生成)?最后,我想避免在我们的 Lambda 中使用原始 sql 字符串查询。

我尝试使用 sqlacodegen combined with sqlalchemy-aurora-data-api (which works on top of sqlalchemy) 但我一直收到错误消息:

方言:

> sqlacodegen postgresql+auroradataapi://username:password@db-host/db-name

botocore.exceptions.NoRegionError: You must specify a region.

没有方言:

> sqlacodegen postgresql://username:password@db-host/db-name

sqlalchemy.exc.OperationalError: (psycopg2.OperationalError) could not connect to server: Connection timed out (0x0000274C/10060)

前者似乎暗示必须将参数传递给调用,但 sqlacodegen 不接受任何 kwargs afaik。后者只是无法连接,psycopg2 告诉我它只是没有使用正确的方言。

None 这两个调用是正确的。以下是正确的称呼方式:

> sqlacodegen postgresql+auroradataapi://:@/db-name

这里有两个要点:

  1. 错误提示You must specify a region是正确的。使用命令行脚本时指定该区域的方式(例如 boto3 文档中的 sqlacodegen) is to use Environment Variables. This section 提到了所有变量及其用法。

  2. 用于DataAPI的特定库(sqlalchemy-aurora-data-api)在他们的示例中使用了这种格式,尽管混合使用但它仍然可以正常工作使用 sqlacodegen.

对于此问题,AWS_DEFAULT_REGION 变量应设置为适当的值(即 us-east-1),以及所有必要的 AWS 凭证(如 AWS_ACCESS_KEY_IDAWS_SECRET_ACCESS_KEY).