Логически SQL таблицы не имеют порядка, и то же самое относится к запросам, если явно не определено с помощью ORDER BY
. Некоторые СУБД, но не PostgreSQL 1 , могут использовать кластерный индекс и хранить строки физически по порядку, но это не гарантирует, что SELECT возвращает строки в этом порядке без использования ORDER BY
. Например, планы параллельного выполнения отбрасывают все ожидания относительно результатов запроса, соответствующих физическому порядку в корзине. Обратите внимание, что СУБД может использовать, например, индексы или другую информацию для получения строк по порядку без необходимости сортировки, поэтому упорядочение по первичному ключу не должно увеличивать накладные расходы.
Либо отсортируйте данные в Python как показано в другом ответе, или используйте вместо него read_sql_query()
и передайте запрос в указанном порядке:
table = pandas.read_sql_query(
"SELECT * FROM schema.table_name ORDER BY some_column",
con=engine)
1 : PostgreSQL имеет CLUSTER
команда, которая кластеризует таблицу на основе индекса, но это одноразовая операция.