0

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

我尝试将sqlacodegen与sqlalchemy -aurora-data-api(在sqlalchemy之上工作)结合使用,但我不断收到错误消息:

用方言:

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

botocore.exceptions.NoRegionError:您必须指定一个区域。

没有方言:

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

sqlalchemy.exc.OperationalError:(psycopg2.OperationalError)无法连接到服务器:连接超时(0x0000274C/10060)

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

4

1 回答 1

0

这两个调用都不正确。这是调用它的正确方法:

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

这里主要有两点:

  1. 错误指示You must specify a region是正确的。使用命令行脚本(例如sqlacodegen)时指定该区域的方法是使用Environment Variablesboto3文档的这一部分提到了所有变量及其用法。

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

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

于 2020-12-22T18:35:04.657 回答