Вопрос:
Мне нужно знать, имеет ли какая-либо таблица sqlalchemy (sqlalchemy.schema.Table) ровно 0 строк. У меня много таблиц с большим количеством строк в каждом, и это нужно запускать для всех из них при запуске, поэтому я ищу наиболее эффективный способ сделать это с точки зрения времени выполнения. Итак, просто делать счет не то, что я ищу. База данных – PostgreSQL, если это что-то меняет
Лучший ответ:
SQLAlchemy позволит вам выполнить “сырой” запрос. В PostgreSQL вы можете запросить метаданные для n_live_tup, чтобы получить счетчик записей:
SELECT schemaname as schema_name, relname as table_name, n_live_tup as record_count FROM pg_stat_user_tables WHERE n_live_tup > 0;
очевидно, это дает вам все таблицы с живыми записями. Если вы хотите только те, у кого нет, измените значение на WHERE n_live_tup = 0 и если вы хотите ограничить его только определенной таблицей, добавьте table_name = <<your_table_name>> в предложение where.
Если у вас нет роли с разрешениями, и вы просто хотите увидеть, была ли эта таблица пустой, вы всегда можете сделать это:
SELECT True FROM <<your_table_name>> LIMIT 1;
Это вернет True, если таблица имеет записи или NULL, если это не так.
Ответ №1
Вы можете use-
db.query(Table_Name).first()
где db – объект sessionmaker(). Благодаря @David S