python-3.x - 当查询包含来自多个数据库的表的连接时,如何在 boto3 中设置 QueryExecutionContext?

标签 python-3.x amazon-web-services boto3 amazon-athena

我在 python3 中使用 Boto3 包来执行 Athena 查询。来自documentation of Boto3 ,我知道我可以指定一个查询执行上下文,即必须在其下执行查询的数据库名称。通过正确指定的查询执行上下文,我们可以从查询中省略完全限定的表名 (db_name.table_name),而只使用表名。

因此查询 SELECT * FROM db1.tab1 可以转换为 SELECT * FROM tab1 with QueryExecutionContext : {'database':'db1'}

问题:我需要从 python 运行 Athena 查询,看起来像这样

SELECT *
FROM   ((SELECT *
        FROM   db1.tab1 AS Temp1)
        INNER JOIN (SELECT *
                    FROM   db2.tab2 AS Temp2)
                ON temp1.id = temp2.id)  

正如我们所见,查询连接了来自两个不同数据库的表。如果我想从这个查询中省略数据库名称,我该如何指定 QueryExecutionContext

最佳答案

QueryExecutionContext只接受一个数据库作为参数。因此,如果您想跨多个数据库运行查询,则必须将完全限定的表名与数据库一起传递。

关于python-3.x - 当查询包含来自多个数据库的表的连接时,如何在 boto3 中设置 QueryExecutionContext?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59851974/

相关文章:

python-3.x - 使用 re.search() 在字符串中搜索模式,模式包含 '+' 字符

amazon-web-services - 使用AWS开发工具包Go从Fargate任务中的角色加载AWS凭证的正确方法是什么?

python - 如何从 lambda 函数 ssh 到 EC2 实例

amazon-web-services - 在自动缩放 AMI 启动中如何在新实例中复制我的私钥文件

python - 如何在 Python AWS boto API 中获取给定 EC2 实例 ID 的容器实例列表

python - TFRecordReader 在 session 关闭后保持文件锁定

python - 如何减慢异步 API 调用以匹配 API 限制?

python - mlrose项目和mlrose-hiive有什么区别?

python - 将 Boto3(版本 1.8 或更高版本)与 Moto 一起使用时如何模拟 AWS 调用

django-models - 使用 Boto3 上传到 Amazon S3 并返回公共(public) url