python获取PostgreSQL数据库的所有表名、表字段信息

在这里插入图片描述


一、需求问题

需求一:获取所有表名

在mysql数据库中,我们想获取某个库下的所有表名时,只需要使用命令:

show tables;

但是,在PostgreSQL数据库时,是不通用的。

需求二:获取表的字段信息

类同需求一,我们想获取表含有的哪些字段信息,又如何实现呢?
在mysql中,只需要使用命令:

SHOW FULL COLUMNS FROM tbl_name [FROM db_name] # 列出字段及详情

同样,在PostgreSQL数据库时,是不通用的。
上述两个需求呢,我们都想通过使用python来连接postgresql数据库,便于程序化和后续数据信息的处理。
在这里插入图片描述

二、问题解决办法

我们想通过python连接数据库来实现,我们先要了解如何用python连接postgres数据库,然后才能在此基础上实现上述的需求。

2.1 python连接postgres数据库的方法

关于连接postgresql数据库的一些方法,总结在博文1【python连接PostgreSQL数据库获取数据的办法】中。

2.2 获取库中的所有表的表名

在连接上数据库后,无论是获取库中的所有表名称还是获取表的字段信息,总体上和获取数据库的数据过程是一样的,只是把获取数据的sql语句换成获取表名或者字段的语句而已。

获取数据库的所有表名语法:
select * from pg_tables [where schemaname = ‘schamaname’]

其中中括号的内容为可选参数,如果不设定条件,就返回连接的数据库中所有的表名信息;如果设定,则返回对应模式下的所有表名信息。

一个完整的示例如下代码所示:

import pandas as pd
import re
import psycopg2
from sqlalchemy import create_engine

# 连接库账户信息
gongsi_engine = create_engine('postgresql+psycopg2://username:password@host:port/databaseName') # 相关参数替换即可
# 从公司数据库读取需要的数据表
company_data = pd.read_sql(r"select * from pg_tables where schemaname = 'public';",con=gongsi_conn)
company_data.head()

上述程序运行结果示例图

2.3 获取数据库指定表的字段信息

获取数据表的字段信息,postgres的语法格式为:

select * from information_schema.columns [ where table_schema=‘table_schema’ [and table_name=‘table_name’] ]

同样,中括号中的限定条件,就是自定返回哪些库表的字段信息,如果不指定,则返回所有表对应的字段信息。
示例如下:

import pandas as pd
import re
import psycopg2
from sqlalchemy import create_engine

# 连接库账户信息
gongsi_engine = create_engine('postgresql+psycopg2://username:password@host:port/databaseName') # 相关参数替换即可
company_data = pd.read_sql(r"select * from information_schema.columns where table_schema='table_schema' and table_name='table_name' ", con=gongsi_engine )
company_data.head()

上述程序运行结果示例图

三、小感

落脚点最后都是对数据库本身的使用语法的熟练情况。所以, 还是要对数据库基本的增删改查操作还是要熟练掌握,这是一个分析师应该具备的基本素养!


  1. 【python连接PostgreSQL数据库获取数据的办法】
    在这里插入图片描述 ↩︎

Guess you like

Origin blog.csdn.net/weixin_42521211/article/details/114372060