检查sqlalchemy表是否为空

时间:2014-04-22 01:13:17

标签: postgresql sqlalchemy

我需要知道任何给定的sqlalchemy表(sqlalchemy.schema.Table)是否恰好有0行。我有很多表,每个表都有很多行,这些表必须在启动时运行所有这些表,所以我正在寻找从运行时角度来看最有效的方法。所以,只是做一个计数不是我想要的。如果改变了任何内容,数据库就是PostgreSQL

2 个答案:

答案 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()

其中dbsessionmaker()个对象。谢谢@David S