Jesteś ugryziony przez problemy z (nie)wrażliwością na sprawy w PostgreSQL. Jeśli zacytujesz nazwę tabeli w zapytaniu, zadziała:
df = pd.read_sql_query('select * from "Stat_Table"',con=engine)
Ale osobiście radziłbym, aby zawsze używać nazw tabel małymi literami (i nazw kolumn), również podczas zapisywania tabeli do bazy danych, aby zapobiec takim problemom.
Z dokumentacji PostgreSQL (http:// www.postgresql.org/docs/8.0/static/sql-syntax.html#SQL-SYNTAX-IDENTIFIERS ):
Aby wyjaśnić nieco więcej:napisałeś tabelę o nazwie Stat_Table
do bazy danych (a sqlalchemy zacytuje tę nazwę, więc zostanie zapisana jako "Stat_Table" w bazie danych postgres). Podczas wykonywania zapytania 'select * from Stat_Table'
niecytowana nazwa tabeli zostanie przekonwertowana na małe litery stat_table
, a więc otrzymujesz komunikat, że ta tabela nie została znaleziona.
Zobacz np. Czy w nazwach kolumn PostgreSQL jest rozróżniana wielkość liter?