我正试图通过pyodbc在AWS athena中查询一个表。我已经成功地创建了一个连接,甚至可以通过pyodbc读取列名,但当我尝试查询表时,它显然不存在。
import pyodbc
import pandas as pd
cnxn = pyodbc.connect('DSN=databaseDSN;UID=user;PWD=password')
cursor = cnxn.cursor()
for row in cursor.tables():
print(row.table_name)
这给出了数据库中表名的列表。
for row in cursor.columns(table='tablename'):
print(row.column_name)
这为我提供了表中正确的列名。
sql = "Select * From tablename"
data = pd.read_sql(sql,cnxn)
这会引发错误
DatabaseError: Execution failed on sql 'Select * From tablename': ('42000', '[42000] [Simba][Athena] (1040) An error has been thrown from the AWS Athena client. Error Message: SYNTAX_ERROR: line 1:15: Table awsdatacatalog.default.tablename does not exist
我已经解决了自己的问题,我的表在一个模式中。
我用修复了它
sql = "Select * From schema.tablename"
data = pd.read_sql(sql,cnxn)