使用 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
列。
我正在尝试迭代 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
列。