数据存储_PGSQL

1 概念

1.1 PGSQL 与 MySQL

  • 在开源方面,PostgreSQL 是一个完全开源的数据库管理系统,MySQL 分为两个版本:开源版本和商业版本。
  • 数据类型方面,PostgreSQL 提供了丰富的内置数据类型,包括数组、JSON、HSTORE(键值对)等。
  • PostgreSQL 对 SQL 标准的支持较好,支持更多高级 SQL 功能。
  • 性能方面,PostgreSQL 支持表分区、并行查询和内置的复制功能,使其适用于大规模应用。

1.2 schema

在 PostgreSQL 中,schema 是一个命名空间,它可以包含数据库对象的名称,如表、视图、索引、数据类型、函数以及运算符。在一个数据库中可以存在多个 schema,它们都有各自的命名空间。这使得多个用户可以在同一个数据库中使用相同的表名,因为它们在不同的 schema 中。

相关SQL命令:

  • CREATE SCHEMA:创建一个新的 schema,
  • DROP SCHEMA:删除一个 schema
  • ALTER SCHEMA:更改一个已存在的 schema 的属性

2 建立服务器环境

shell 复制代码
$ docker pull postgres:11.0
$ mkdir /exports/project/pv/data/ -p
$ docker run --rm --name pv_postgres -v /exports/project/pv/data/:/var/lib/postgresql/data -e POSTGRES_PASSWORD=123456 -p 5432:5432 -d postgres:11.0

此后即可操作:

  • 使用 Navicat 连接;
  • 创建数据库(注意:字符集按 sql 中的设置)
  • 创建 schema
  • 用sql导入数据

3 用命令行连接服务

shell 复制代码
$ psql -h ip -p 5432 -U username

4 常用 sql 命令

4.1.1 查看数据库
sql 复制代码
\l
4.1.2 连接数据库
sql 复制代码
\c 数据库名;
4.1.3 查看当前库中的数据表
sql 复制代码
\dt
4.1.4 查看表结构
sql 复制代码
\d 表名;

实在找不到建表语句,可以把表结构贴到 chatGPT,让他写对应的建表语句

4.1.5 退出
sql 复制代码
\q
4.1.6 查看 SCHEMA 命名空间
sql 复制代码
\dn
4.1.7 查看所有表

即使使用最高权限的 postgres 用户,命令行连接也可能看不到某些 schema 对应的表,使用以下命令可以看到命名空间中的表。

sql 复制代码
select * from pg_tables;
4.1.8 访问表
sql 复制代码
select * from SCHEMA名.表名;

5 使用 sqlalchemy 连接 pgsql

5.1 安装

shell 复制代码
$ pip install sqlalchemy
$ pip install psycopg2

5.2 代码

python 复制代码
from sqlalchemy import create_engine, text
from sqlalchemy.orm import sessionmaker

db_url = "postgresql://postgres:123456@192.168.10.106:5432/data"
engine = create_engine(db_url)
Session = sessionmaker(bind=engine)
session = Session()

result = session.execute(text("select * from pg_type;"))
for row in result:
    print(row)
session.commit()
session.close()
engine.dispose()

6 注意事项

  • where 中注意用单引号
  • 设置搜索路径:SET search_path TO data;(设定命名空间)
  • 表名:注意大小写,不加引号直接转成小写,对于大写表名,需要加引号

7 参考

postgresql数据库中多个Schemas互相访问
PostgreSQL命令行工具psql常用命令
psql基本命令

相关推荐
w-w0w-w5 小时前
SQL注入
网络·数据库·sql
tianyuanwo5 小时前
NetBox 数据库详解:当“关系型数据库”被装进一个网络运维的领域模型里
运维·数据库·netbox
一条泥憨鱼5 小时前
【计算机网络】短连接、长连接与连接池:从 TCP 握手到池化复用的完整链路
网络·数据库·网络协议·tcp/ip·计算机网络
IvorySQL6 小时前
深入 PostgreSQL WAL:从崩溃恢复到逻辑复制
数据库·postgresql
幽灵诶7 小时前
Mysql(基于测试的学习)
数据库·mysql
砚底藏山河7 小时前
python量化自定义周期 K 线合成
java·开发语言·数据库·python·金融
宇宙无敌暴龙战士6668 小时前
MySQL 8 库表操作学习笔记:SQL 基础、库表管理、约束与用户授权全流程
数据库·sql·mysql·学习笔记·后端开发
猿究院_夏燊8 小时前
MySQL 的四种隔离级别
java·数据库·mysql
say_fall8 小时前
【Linux系统编程】Ext 文件系统:磁盘与存储、文件与目录、现代计算机究竟如何寻找文件
linux·运维·服务器·数据库·c++
共享家95279 小时前
408 操作系统第一章
服务器·数据库·windows