Vous êtes mordu par les problèmes de (in)sensibilité à la casse avec PostgreSQL. Si vous citez le nom de la table dans la requête, cela fonctionnera :
df = pd.read_sql_query('select * from "Stat_Table"',con=engine)
Mais personnellement, je conseillerais de toujours utiliser des noms de table en minuscules (et des noms de colonne), également lors de l'écriture de la table dans la base de données pour éviter de tels problèmes.
À partir de la documentation PostgreSQL (http:// www.postgresql.org/docs/8.0/static/sql-syntax.html#SQL-SYNTAX-IDENTIFIERS ):
Pour expliquer un peu plus :vous avez écrit une table avec le nom Stat_Table
à la base de données (et sqlalchemy citera ce nom, il sera donc écrit comme "Stat_Table" dans la base de données postgres). Lors de la requête 'select * from Stat_Table'
le nom de table sans guillemets sera converti en minuscules stat_table
, et ainsi vous obtenez le message que cette table est introuvable.
Voir par exemple aussi Les noms de colonnes PostgreSQL sont-ils sensibles à la casse ?