用Django部署了一个项目,数据库采用postgreSQL。如果需要查看一下posgres里面的表结构,比如‘auth_user'表是由哪些字段构成的,最简单的方法是进入postgre数据库,使用
postgres=# \d auth_user
在pyhon中,可以使用“select column_name from information_schema.columns where table_schema='public' and table_name='auth_user”语句。
import sys
import psycopg2
import psycopg2.extras
# 数据库连接参数,生产环境中应放到独立文件。
db_param = {
# 我使用的是docker容器部署的,容器名称为“db”,所以主机为“db”,如果是在本机就为“localhost”
"host": "db",
# 数据库名
"database": "postgres",
# 登录数据库的用户名
"user": "postgres",
# 登录数据库的用户
"password": "postgres"
}
#创建数据库连接
def connection(param_dic):
conn = None
try:
print('连接 PostgreSQL 数据库...')
conn = psycopg2.connect(**param_dic)
except(Exception, psycopg2.DatabaseError) as error:
print(error)
sys.exit(1)
print("数据库连接成功")
return conn
def query_table(conn):
"""
查看表结构
conn:数据库连接
"""
#列名。对应数据库中的字段
tb_columns=[]
cur = conn.cursor(cursor_factory=psycopg2.extras.DictCursor)
with conn:
#查询表结构
cur.execute("select column_name from information_schema.columns where table_schema='public' and table_name='auth_user'")
result = cur.fetchall()
for row in result:
#构建列
tb_columns+=row
print(tb_columns)
cur.close()
query_table(connection(db_param))
使用python运行该程序,可以看到输出的结果:
连接 PostgreSQL 数据库...
数据库连接成功
['id', 'password', 'last_login', 'is_superuser', 'username', 'first_name', 'last_name', 'email', 'is_staff', 'is_active', 'date_joined']