我一直在想,是否有任何方法可以为通过DataAPI使用的Aurora Serverless(Postgresql(DB提供ORM功能(尤其是代码模型生成(?最终,我希望避免在Lambdas中使用原始sql字符串查询。
我尝试将sqlacodegen与sqlalchemy aurora数据api结合使用(它在sqlalchemi之上工作(,但我不断收到错误:
使用方言:
> 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
告诉我它无论如何都没有使用正确的方言。
这两个调用都不正确。以下是正确的称呼方式:
> sqlacodegen postgresql+auroradataapi://:@/db-name
这里有两个要点:
指示
You must specify a region
的错误是正确的。使用命令行脚本(如sqlacodegen(时指定该区域的方法是使用环境变量。boto3文档的这一部分提到了所有变量及其用法。用于DataAPI的特定库(sqlalchemy-aurora-data-api(在他们的示例中使用了这样的格式,尽管与sqlacodegen混合使用,但它仍然可以正常工作。
对于此问题,AWS_DEFAULT_REGION
变量应设置为适当的值(即us-east-1
(,以及所有必要的AWS凭据(如AWS_ACCESS_KEY_ID
和AWS_SECRET_ACCESS_KEY
(。