我需要知道任何给定的sqlalchemy表(sqlalchemy.schema.Table)是否恰好有0行。我有很多表,每个表都有很多行,这些表必须在启动时运行所有这些表,所以我正在寻找从运行时角度来看最有效的方法。所以,只是做一个计数不是我想要的。如果改变了任何内容,数据库就是PostgreSQL
答案 0 :(得分:2)
SQLAlchemy允许你做一个" raw"查询。在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 :(得分:1)
您可以使用 -
db.query(Table_Name).first()
其中db
是sessionmaker()
个对象。谢谢@David S