我在 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/