使用 Psycopg2 获取所有模式的名称

Get the names of all schemas with Psycopg2

我正在尝试迭代 Python 中 Postgresql 数据库的所有 table,以便在每个数据库中执行查询。为了执行查询,我需要获取每个模式和 table 名称,所以我想获取这样的字符串列表:"schema.tablename".

我用过这个,但是它只列出了 table 的名字,所以没有帮助。

select relname from pg_class where relkind='r' and relname !~ '^(pg_|sql_)';

我确定一定有更简单的方法,但我一直在寻找没有成功的方法...

感谢任何帮助,谢谢!!

你想加入反对 pg_namespace:

t=# select nspname||'.'||relname from pg_class join pg_namespace on relnamespace = pg_namespace.oid where relkind='r' and relname !~ '^(pg_|sql_)' limit 5;
     ?column?
-------------------
 public.s141
 public.events
 public.tg_rep_que
 public.t4
 public.menupoint
(5 rows)
select
  relname,
  oid::regclass as full_name,
  relnamespace::regnamespace as schema_name
from pg_class
where relkind='r';

请注意,它不会将架构名称附加到通过 search_path 参数可用的表中,因此您可以使用上述查询中的 schema_name 列。