当前位置: 首页 > news >正文

python 如何遍历 postgresql 所有的用户表 ?

要遍历 PostgreSQL 中的所有用户表,你可以通过查询系统目录表 pg_class 结合 pg_namespace 来实现。以下是几种常见的方法:

方法一:使用 SQL 查询

SELECT table_name
FROM information_schema.tables
WHERE table_schema = 'public'  -- 只查询 public 模式,可修改为其他模式AND table_type = 'BASE TABLE';  -- 只查询用户表,排除视图等

方法二:查询系统表

SELECT relname AS table_name
FROM pg_class
JOIN pg_namespace ON pg_class.relnamespace = pg_namespace.oid
WHERE pg_namespace.nspname = 'public'  -- 模式名AND pg_class.relkind = 'r';  -- 'r' 表示普通表

方法三:使用 psql 元命令(命令行工具)

psql 交互式终端中,可以直接使用:

\dt  -- 显示当前模式下的所有表
\dt *.*  -- 显示所有模式下的所有表

方法四:通过编程语言遍历(Python 示例)

如果你需要在代码中动态遍历表,可以使用以下 Python 代码:

import psycopg2def get_all_tables(database, user, password, host="localhost", port="5432"):try:# 连接到 PostgreSQL 数据库connection = psycopg2.connect(database=database,user=user,password=password,host=host,port=port)cursor = connection.cursor()# 查询所有用户表query = """SELECT table_nameFROM information_schema.tablesWHERE table_schema = 'public'AND table_type = 'BASE TABLE';"""cursor.execute(query)# 获取所有表名tables = [row[0] for row in cursor.fetchall()]return tablesexcept (Exception, psycopg2.Error) as error:print("Error while connecting to PostgreSQL", error)finally:# 关闭数据库连接if connection:cursor.close()connection.close()# 使用示例
if __name__ == "__main__":tables = get_all_tables(database="your_database",user="your_username",password="your_password")print("所有用户表:", tables)

说明

  • 模式过滤:上述示例默认只查询 public 模式下的表。如果你有其他模式(如 myschema),需要修改 table_schema = 'public'nspname = 'public'
  • 系统表排除:通过 table_type = 'BASE TABLE'relkind = 'r' 确保只返回用户创建的普通表,不包括视图、索引等。
  • 权限要求:需要有访问 information_schemapg_class 的权限,通常普通用户都具备此权限。

根据你的具体需求选择合适的方法即可。

相关文章:

  • PostgreSQL 联合索引生效条件
  • 每日Prompt:磨砂玻璃后的虚实对比剪影
  • 如何在WooCommerce中设置Stripe
  • 【匹配】Needleman–Wunsch
  • 【yolo】如何在 YOLOv8 中添加负样本以减少误检
  • Springboot3自定义starter笔记
  • MarkitDown:AI时代的文档转换利器
  • 四维时空数据安全传输新框架:压缩感知与几何驱动跳频
  • 【iOS安全】Dopamine越狱 iPhone X iOS 16.6 (20G75) | 解决Jailbreak failed with error
  • 如何在多线程环境下避免快速失败异常?
  • GPU异步执行漏洞攻防实战:从CUDA Stream竞争到安全编程规范
  • NHANES指标推荐:OBS
  • 大数据架构选型分析
  • 深度学习中的提示词优化:梯度下降全解析
  • 前端缓存策略
  • Milvus(23):过滤
  • 中国近代史2
  • 工业场景轮式巡检机器人纯视觉识别导航的优势剖析与前景展望
  • uniapp 弹窗封装(上、下、左、右、中五个方位)
  • 【FFmpeg+SDL】使用FFmpeg捕获屏幕,SDL显示
  • 《制止滥用行政权力排除、限制竞争行为规定(修订草案征求意见稿)》公开征求意见
  • 云南德宏州盈江县发生4.5级地震,震源深度10千米
  • 普京批准俄方与乌克兰谈判代表团人员名单
  • 鄂州交警通报致1死2伤车祸:女子操作不当引发,已被刑拘
  • 一个多月来上海交大接连“牵手”三区,在这些方面进行区校合作
  • 京东美团饿了么等外卖平台被约谈