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

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 的权限,通常普通用户都具备此权限。

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

http://www.xdnf.cn/news/6317.html

相关文章:

  • Oracle-相关笔记
  • python中使用neo4j
  • LeetCode 45. 跳跃游戏 II(中等)
  • 牛客网NC22015:最大值和最小值
  • 【Linux系列】Linux 系统下 SSD 磁盘识别
  • 二、xlib事件
  • tomcat项目重构踩坑易错点
  • 【RAP】RAP动作与流行舞蹈/街舞
  • 基于昇腾300IDUO 部署PaddleOCR模型
  • mock 数据( json-server )
  • React学习———Redux 、 React Redux和react-persist
  • <C++> MFC自动关闭对话框(MessageBoxTimeout)
  • Vue 学习随笔系列二十三 -- el-date-picker 组件
  • Python中的虚拟环境
  • U9C与钉钉审批流对接完整过程
  • lesson02-PyTorch开发环境安装
  • 光谱相机的图像预处理技术
  • 当服务器出现宕机情况该怎么办?
  • Axure中继器高保真交互原型的核心元件
  • 科技的成就(六十八)
  • 网络原理 | 网络基础概念复习
  • Automatic Recovery of the Atmospheric Light in Hazy Images论文阅读
  • 使用 SiamMask 实现单目标逐帧跟踪与掩码中心提取
  • 深入探索 OpenCV:从实时视频流到图像处理的实战指南
  • 技术文档不完善,如何促进知识传承
  • AI日报 · 2025年5月15日|GPT-4.1 登陆 ChatGPT
  • [原创](现代Delphi 12指南):[macOS 64bit App开发]: 注意“回车换行“的跨平台使用.
  • 基于YOLO算法的目标检测系统实现指南
  • 蓝桥杯11届国B 约数
  • 小程序映射逻辑处理