Je wordt gebeten door de (on)gevoeligheidsproblemen met PostgreSQL. Als u de tabelnaam in de query citeert, werkt het:
df = pd.read_sql_query('select * from "Stat_Table"',con=engine)
Maar persoonlijk zou ik adviseren om altijd kleine tabelnamen (en kolomnamen) te gebruiken, ook bij het schrijven van de tabel naar de database om dergelijke problemen te voorkomen.
Uit de PostgreSQL-documenten (http:// www.postgresql.org/docs/8.0/static/sql-syntax.html#SQL-SYNTAX-IDENTIFIERS ):
Om wat meer uit te leggen:je hebt een tabel geschreven met de naam Stat_Table
naar de database (en sqlalchemy zal deze naam aanhalen, dus het zal worden geschreven als "Stat_Table" in de postgres-database). Bij het uitvoeren van de zoekopdracht 'select * from Stat_Table'
de niet-geciteerde tabelnaam wordt geconverteerd naar kleine letters stat_table
, en dus krijg je de melding dat deze tabel niet gevonden is.
Zie bijvoorbeeld ook Zijn PostgreSQL-kolomnamen hoofdlettergevoelig?