sco*_*ski 5 postgresql sqlalchemy
我需要知道任何给定的 sqlalchemy 表 (sqlalchemy.schema.Table) 是否正好有 0 行。我有很多表,每个表都有很多行,并且必须在启动时为所有这些表运行,因此我正在寻找从运行时角度执行此操作的最有效方法。所以,只是做一个计数不是我想要的。如果更改任何内容,则数据库为 PostgreSQL
您可以使用-
db.query(Table_Name).first()
Run Code Online (Sandbox Code Playgroud)
这里db是sessionmaker()对象。谢谢@David S
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;
Run Code Online (Sandbox Code Playgroud)
显然,这为您提供了所有带有实时记录的表。如果您只想要没有的,请将 to 更改为WHERE n_live_tup = 0,如果您想将其限制为仅某个表,请添加table_name = <<your_table_name>>到 where 子句。
如果您没有具有权限的角色,并且您只想查看表是否为空,那么您始终可以执行以下操作:
SELECT True FROM <<your_table_name>> LIMIT 1;
Run Code Online (Sandbox Code Playgroud)
如果表有记录则返回 True,如果没有则返回 NULL。
| 归档时间: |
|
| 查看次数: |
6373 次 |
| 最近记录: |