【数据库】--PostgreSQL 详细安装教程

目录

1.PostgreSQL--简介

2.PostgreSQL--安装

3.PostgreSQL--可视化工具

4.PostgreSQL--python连接


1.PostgreSQL--简介

PostgreSQL (常简称为 Postgres )是一个功能强大、开源、对象-关系型数据库管理系统 (ORDBMS),以稳定性、可扩展性、标准兼容性和数据完整性 著称。它诞生于 1986 年的加州大学伯克利分校(UC Berkeley)的 POSTGRES 项目,是目前世界上最先进的开源数据库之一。

官网:https://www.postgresql.org/

开源协议:PostgreSQL License(类似 MIT/BSD,非常宽松)


🔑 核心特性

  1. 完全开源 & 社区驱动
  • 无商业公司控制,由全球开发者社区维护。

  • 代码透明,可自由使用、修改、分发(包括商用)。

  1. 高度兼容 SQL 标准
  • 支持 SQL:2016 大部分核心特性,在多个权威评测中 SQL 兼容性得分最高。

  • 支持复杂查询、窗口函数、CTE(公共表表达式)、递归查询等。

  1. 强大的数据类型支持
  • 基础类型:整数、浮点、字符串、日期时间等

  • 高级类型:

    • JSON / JSONB(高效存储与查询)

    • 数组(Array)

    • 范围类型(Range)

    • 几何类型(Point, Line, Polygon)

    • 自定义复合类型

    • UUID、INET(IP 地址)、CIDR 等

  1. 可扩展性极强
  • 支持自定义函数(用 SQL、PL/pgSQL、Python、C、Java 等编写)

  • 支持扩展插件(Extensions):

    • postgis:地理空间数据处理(GIS)

    • pg_trgm:模糊搜索与相似度匹配

    • hstore:键值对存储

    • timescaledb:时序数据优化

    • citus:分布式扩展(由微软收购)

2.PostgreSQL--安装

下载官网:EDB:开源企业 Postgres 数据库管理

安装教程文档:https://www.enterprisedb.com/docs/supported-open-source/postgresql/installing/windows/

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

1.安装

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

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

最后,添加到环境变量:

验证一下:

bash 复制代码
psql --version

3.PostgreSQL--可视化工具

pgAdmin官网下载:下载

pgAdminPostgreSQL 官方推荐的开源图形化管理工具(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()
相关推荐
代码探秘者2 小时前
【Redis】双写一致性:延迟双删 / 读写锁 / 异步通知 / Canal,一文全解
java·数据库·redis·后端·算法·缓存
数据知道2 小时前
MongoDB 读写关注设置:一致性与性能的黄金平衡法则
数据库·mongodb
一渊之隔2 小时前
uniapp封装 SQLite数据库操作接口
数据库·uni-app
安安爸Chris2 小时前
Ubuntu 24版本安装openclaw 3.2安装 bug:systemctl is-enabled unavailable Command failed
ubuntu·postgresql·bug
代码的奴隶(艾伦·耶格尔)2 小时前
Hbase GUI 可视化软件
大数据·数据库·hbase
快乐非自愿2 小时前
2026年Django生态现代化组件深度解析与实践
数据库·django·sqlite
それども2 小时前
SQL NOT EXISTS理解
数据库·sql
数据知道2 小时前
MongoDB链式复制:配置 Chained Replication 优化跨机房同步
数据库·mongodb
brucelee1862 小时前
芋道 Spring Boot 框架 + AWS S3 图片上传显示
java·开发语言·数据库