python-3.x - 当查询包含来自多个数据库的表的连接时,如何在 boto3 中设置 QueryExecutionContext?
问题描述
我在 python3 中使用 Boto3 包来执行 Athena 查询。从Boto3 的文档中,我了解到我可以指定查询执行上下文,即必须在其下执行查询的数据库名称。使用正确指定的查询执行上下文,我们可以db_name.table_name
从查询中省略完全限定的表名(),而只使用表名。
所以查询SELECT * FROM db1.tab1
可以转换SELECT * FROM tab1
为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只接受一个数据库作为参数。因此,如果要跨多个数据库运行查询,则必须将完全限定的表名与数据库一起传递。
推荐阅读
- c++ - 在 Manjaro Linux 上包括 GTK for C++ 的问题
- javascript - 阿波罗联盟实体参考工作不正常
- php - 我可以获得修复 Stripe 结帐代码上的 json 错误的帮助吗?
- python - pandas.read_excel() ImportError:无法导入名称'TYPE_BOOL'
- c# - ClickOnce 升级后,我如何杀死我的应用程序的其他(旧)运行实例?
- windows - 如何禁用 Windows 错误报告提示但仍收集故障转储?
- excel - Excel VBA - 选择数据验证下拉列表中的第一项
- javascript - 如何从机器人中删除最后发送的消息。不和谐.js
- angular - 角度帮助:Springboot 后端
- api - 围绕 GraphQL 嵌套深度的最佳实践