pyodbc可以从表中读取列名,但对该表的查询会引发"不存在"错误



我正试图通过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)

相关内容

  • 没有找到相关文章

最新更新