目录
1.PostgreSQL--简介
PostgreSQL (常简称为 Postgres )是一个功能强大、开源、对象-关系型数据库管理系统 (ORDBMS),以稳定性、可扩展性、标准兼容性和数据完整性 著称。它诞生于 1986 年的加州大学伯克利分校(UC Berkeley)的 POSTGRES 项目,是目前世界上最先进的开源数据库之一。
官网:https://www.postgresql.org/
开源协议:PostgreSQL License(类似 MIT/BSD,非常宽松)
🔑 核心特性
- 完全开源 & 社区驱动
-
无商业公司控制,由全球开发者社区维护。
-
代码透明,可自由使用、修改、分发(包括商用)。
- 高度兼容 SQL 标准
-
支持 SQL:2016 大部分核心特性,在多个权威评测中 SQL 兼容性得分最高。
-
支持复杂查询、窗口函数、CTE(公共表表达式)、递归查询等。
- 强大的数据类型支持
-
基础类型:整数、浮点、字符串、日期时间等
-
高级类型:
-
JSON / JSONB(高效存储与查询)
-
数组(Array)
-
范围类型(Range)
-
几何类型(Point, Line, Polygon)
-
自定义复合类型
-
UUID、INET(IP 地址)、CIDR 等
-
- 可扩展性极强
-
支持自定义函数(用 SQL、PL/pgSQL、Python、C、Java 等编写)
-
支持扩展插件(Extensions):
-
postgis:地理空间数据处理(GIS) -
pg_trgm:模糊搜索与相似度匹配 -
hstore:键值对存储 -
timescaledb:时序数据优化 -
citus:分布式扩展(由微软收购)
-
2.PostgreSQL--安装
安装教程文档:https://www.enterprisedb.com/docs/supported-open-source/postgresql/installing/windows/

根据操作系统选择支持的版本:

1.安装

选择简体中文,然后next就好了
、

取消勾选Stack Builder,然后点击Finish关闭窗口。

最后,添加到环境变量:

验证一下:
bash
psql --version

3.PostgreSQL--可视化工具
pgAdmin官网下载:下载
pgAdmin 是 PostgreSQL 官方推荐的开源图形化管理工具(GUI),用于可视化地管理 PostgreSQL 数据库服务器。它功能强大、跨平台、免费,是 PostgreSQL 用户最常用的数据库客户端之一。
- 全称:pgAdmin
- 官网 :https://www.pgadmin.org/
- 开源协议:PostgreSQL License(非常宽松,可免费用于商业用途)
- 支持平台:Windows、macOS、Linux
- 最新版本 :截至 2026 年,主流使用的是 pgAdmin 4(基于 Web 技术重构)

下载需要的版本:

安装程序包:

点击安装:

设置中文:


连接到 PostgreSQL 数据库服务器,双击Servers 输入安装数据库时的密码进行连接。
-
Host :
localhost(本地)或服务器 IP。 -
Port :
5432(默认端口)。 -
Username :
postgres(默认超级用户)。 -
Password: 安装 PostgreSQL 时设置的密码。


创建表:
sql
-- 1. 用户表(users)
CREATE TABLE users (
user_id SERIAL PRIMARY KEY,
username VARCHAR(100) NOT NULL UNIQUE,
password_hash VARCHAR(255) NOT NULL,
role VARCHAR(20) NOT NULL CHECK (role IN ('admin', 'annotator', 'uploader', 'viewer'))
);
-- 2. 图片表(picture)
CREATE TABLE picture (
picture_id SERIAL PRIMARY KEY,
filename VARCHAR(255),
uploader_id INT NOT NULL,
upload_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
status SMALLINT NOT NULL DEFAULT 0,
FOREIGN KEY (uploader_id) REFERENCES users(user_id)
);
-- 3. AI 标注表(ai_annotation)
CREATE TABLE ai_annotation (
ai_annotation_id SERIAL PRIMARY KEY,
picture_id INT NOT NULL,
model_version VARCHAR(50) NOT NULL,
annotation_data JSON NOT NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (picture_id) REFERENCES picture(picture_id)
);
-- 4. 人工标注表(manual_annotation)
CREATE TABLE manual_annotation (
manual_annotation_id SERIAL PRIMARY KEY,
picture_id INT NOT NULL,
annotator_id INT NOT NULL,
label JSON NOT NULL,
subimage_name VARCHAR(255) NOT NULL,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (picture_id) REFERENCES picture(picture_id),
FOREIGN KEY (annotator_id) REFERENCES users(user_id)
);
-- 5. 完整标注表(complete_annotation)
CREATE TABLE complete_annotation (
complete_annotation_id SERIAL PRIMARY KEY,
picture_id INT NOT NULL UNIQUE,
final_data JSON NOT NULL,
created_by INT NOT NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (picture_id) REFERENCES picture(picture_id),
FOREIGN KEY (created_by) REFERENCES users(user_id)
);
-- 添加列注释(PostgreSQL 方式)
COMMENT ON COLUMN picture.status IS '0-待标注, 1-已标注等';
COMMENT ON COLUMN manual_annotation.label IS '地质类别标签,如 {"type": "fault", "confidence": 0.95}';
执行查询语句,查看表

4.PostgreSQL--python连接
首先安装相关的数据包
bash
pip install psycopg2
然后连接:
python
#导入依赖包
#!/usr/bin/python3
import psycopg2
#创建连接对象
conn=psycopg2.connect(database="postgres",user="postgres",password="123456",host="localhost",port="5432")
cur=conn.cursor() #创建指针对象
# 创建表
cur.execute("CREATE TABLE student(id integer,name varchar,sex varchar);")
#插入数据
cur.execute("INSERT INTO student(id,name,sex)VALUES(%s,%s,%s)",(1,'Aspirin','M'))
cur.execute("INSERT INTO student(id,name,sex)VALUES(%s,%s,%s)",(2,'Taxol','F'))
cur.execute("INSERT INTO student(id,name,sex)VALUES(%s,%s,%s)",(3,'Dixheral','M'))
# 获取结果
cur.execute('SELECT * FROM student')
results=cur.fetchall()
print (results)
# 关闭练级
conn.commit()
cur.close()
conn.close()