Bạn đang bị ảnh hưởng bởi các vấn đề về độ nhạy trường hợp (trong) với PostgreSQL. Nếu bạn trích dẫn tên bảng trong truy vấn, nó sẽ hoạt động:
df = pd.read_sql_query('select * from "Stat_Table"',con=engine)
Nhưng về mặt cá nhân, tôi khuyên bạn chỉ nên luôn sử dụng tên bảng (và tên cột) viết thường khi ghi bảng vào cơ sở dữ liệu để ngăn chặn các vấn đề như vậy.
Từ tài liệu PostgreSQL ( http:// www.postgresql.org/docs/8.0/static/sql-syntax.html#SQL-SYNTAX-IDENTIFIERS ):
Để giải thích thêm một chút:bạn đã viết một bảng với tên Stat_Table
vào cơ sở dữ liệu (và sqlalchemy sẽ trích dẫn tên này, vì vậy nó sẽ được viết là "Stat_Table" trong cơ sở dữ liệu postgres). Khi thực hiện truy vấn 'select * from Stat_Table'
tên bảng không được trích dẫn sẽ được chuyển đổi thành chữ thường stat_table
, và do đó bạn nhận được thông báo rằng bảng này không được tìm thấy.
Xem thêm ví dụ: Tên cột PostgreSQL có phân biệt chữ hoa chữ thường không?