postgresql 实践

1. 环境搭建

参考:http://www.lvesu.com/blog/main/cms-532.html

1.1. 安装依赖

# 需要安装 postgresql-devel 插件
yum install postgresql-devel*
# 安装 pg 和 py 的驱动:
# Debian系:
apt-get install libpq-dev python-dev
# RedHat系:
yum install libpqxx-devel python-devel# 安装完成,再使用
pip install psycopg2

1.2. 安装postgres(包含 psql)

sudo apt-get -y install postgresql
# 启动服务
systemctl start postgresql.service
systemctl restart postgresql

1.3. 登录

1.3.1. 修改linux系统postgres用户的密码

PostgreSQL 都会创建一个默认的 linux 用户 postgres,修改该用户密码的方法如下:

  1. 先删除用户 postgres 的历史密码
sudo  passwd -d postgres
  1. 重新设置用户postgres的密码
sudo -u postgres passwd

按照系统提示,输入两次新的密码,即可搞定。

1.3.2. 修改用户postgres的密码

PostgreSQL 数据库默认创建管理员账号:postgres;修改其密码,仅需一下三步:

  1. 首先,登录PostgreSQL
sudo -u postgres psql postgres -p 5432
  1. 然后,修改账号 postgres 的密码
ALTER USER postgres WITH PASSWORD 'Lpf65BsDhDNdaJmH';
  1. 最后,退出 pgsql 客户端

2. 数据库操作

2.1. 创建数据库

# 登录
psql -U postgres
# 执行sql
CREATE DATABASE manage;
# 查询
postgres=# \l;
# 选择数据库
postgres=# \c manage;
# 删除数据库
DROP DATABASE [ IF EXISTS ] name
DROP DATABASE IF EXISTS mydb;

2.2. 创建表

postgres=# CREATE TABLE questions(question_id varchar(32) PRIMARY KEY     NOT NULL,question_text      varchar(128)    NOT NULL,category      varchar(32)     NOT NULL,task_id varchar(32)      NOT NULL
);postgres=# CREATE TABLE answers(answer_id varchar(32) PRIMARY KEY     NOT NULL,answer_text      varchar(128)    NOT NULL,question_id varchar(32)      NOT NULL,model_id varchar(32)      NOT NULL,task_id varchar(32)      NOT NULL,score INT
);
# 查看所有表
postgres=# \dt
# 查看指定表,显示表信息
postgres=# \d answers# 删除表
DROP TABLE [ IF EXISTS ] name
DROP TABLE IF EXISTS answers;

2.3. 多表查询

https://blog.csdn.net/weixin_67588007/article/details/124832788

2.3.1. 通过 SELECT 子句进行多表查询

语法:
select 字段名
from 表1,表2 …
where 表1.字段 = 表2.字段
and 其它查询条件
例:以学生表 student 和班级表 class 为例
Select student.sid, student.sname, student.classid, class.classid, class.classname
from student,class
where student.classid = class.classid
注意:上面的代码中,以两张表相同的字段信息作为条件,进行两个表联查,但在实际开发中不建议这样使用,最好用主外键约束来实现。

2.3.2. 通过内连接 inner join 进行查询

语法:
select 字段名
from 表1
inner join 表2
on 表1.字段 = 表2.字段
例:以学生表 student 和班级表 class 为例
innerjoin
select student.sid, student.sname, student.classid, class.classid, class.classname
from student
inner join class
on student.classid = class.classid
innerjoinselect
这种场景下得到的是满足判断条件的 studentclass 内部的数据;正因为得到的是内部共有数据,所以连接方式称为内连接。

2.3.3. 通过外连接left join,left outer join,right join,right outer join,union进行查询

2.3.3.1. left join

语法:
select 字段名
from 表1
left join 表2
on 表1.字段 = 表2.字段
例:以学生表 student 和班级表 class 为例
leftjoin
select student.* , class.*
from student
left join class
on student.classid = class.classid
结果如下,class表中不存在的记录填充Null:
leftjoinselect
这种场景下得到的是 student 的所有数据,和满足同一条件的 class 的数据;

2.3.3.2. left outer join

相当于left join + [where 表2.字段 is null]
语法:
select 字段名
from 表1
left join 表2
on 表1.字段 = 表2.字段
where 表2.字段 is null
例:以学生表student和班级表class为例
leftouterjoin
select student.sid,student.sname,class.classid,class.classname
from student
left join class
on student.classid = class.classid
where class.classid is null
leftouterjoinselect
这种场景下得到的是student中的所有数据减去"与 class 满足同一条件 的数据",然后得到的student剩余数据

2.3.3.3. right join

语法:
select 字段名
from 表1
right join 表2
on 表1.字段 = 表2.字段
例:以学生表student和班级表class为例
rightjoin
select student.* , class.*
from student
right join class
on student.classid = class.classid
rightjoinselect
这种场景下得到的是 class 的所有数据,和满足同一条件的 student 的数据;

2.3.3.4. right outer join

相当于right join + [where 表1.字段 is null]
语法:
select 字段名
from 表1
right join 表2
on 表1.字段 = 表2.字段
where 表1.字段 is null
例:以学生表student和班级表class为例
rightouterjoin
select student.sid,student.sname,class.classid,class.classname
from student
right join class
on student.classid = class.classid
where student.classid is null
rightouterjoinselect
这种场景下得到的是 class 中的所有数据减去 "与 student 满足同一条件的数据“,然后得到的 class 剩余数据;

2.3.3.5. left join union right join

语法:
select 字段名
from 表1
left join 表2
on 表1.字段 = 表2.字段
union
select 字段名
from 表1
right join 表2
​​​​​​​on 表1.字段 = 表2.字段
例:以学生表 student 和班级表 class 为例
union
select student.* , class.*
from student
left join class
on student.classid = class.classid
union
select student.* , class.*
from student
right join class
on student.classid = class.classid
unionselect
这种场景下得到的是满足某一条件的公共记录,和独有的记录

3. psycopg2 连接数据库

使用 psycopg2 模块连接到 PostgreSQL 数据库。能够使用以下连接方法执行所有查询。现在我想指定一个与 public 不同的模式来执行我的 SQL 语句。有没有办法在连接方法中指定模式名称?

conn = psycopg2.connect(host="localhost",port="5432",user="postgres",password="password",database="database",)

我尝试直接在方法内部指定架构。 schema=“schema2” 但我收到以下编程错误。
ProgrammingError: invalid dsn: invalid connection option “schema”

4. 数据库连接池

安装:
https://blog.csdn.net/weixin_44041700/article/details/110454901

使用:
https://blog.51cto.com/u_16213421/7115953
https://www.cnblogs.com/xy-ouyang/p/12987676.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/150623.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ESP8266,手机与电脑之间的TCP通讯

电脑端运行通讯猫调试助手,作为服务端: 电脑端 电脑的IP地址是: 192.168.2.232 手机与电脑之间的TCP通讯 手机端运行网络调试精灵,作为客户端: 手机端 如果从手机端点击"发送"按钮,则也会将"ghhh东方红广场"几个字发送到电脑上(服务端). ESP8266作为客户…

基于springboot实现校友社交平台管理系统项目【项目源码+论文说明】

基于springboot实现校友社交平台管理系统演示 摘要 校友社交系统提供给用户一个校友社交信息管理的网站,最新的校友社交信息让用户及时了解校友社交动向,完成校友社交的同时,还能通过论坛中心进行互动更方便。本系统采用了B/S体系的结构,使用了java技…

LabVIEW更改图像特定部分的颜色

LabVIEW更改图像特定部分的颜色 在随附的照片中,想将包围的部分更改为黄色。该怎么做?或者如何将图像的蓝色部分更改为绿色。 绘制拼合像素图不接受数组或输出数组。如果需要有关函数的更多信息,请按 CTRL H 打开上下文帮助,或单…

Vue+el-image-viewer显示tiff图片,并能够切换图片中的帧

一、简述 在前端界面显示tiff图片,并能够点击翻页按钮切换tiff图片中的帧,接收到后端传来的buffer,在前端处理后进行展示 二、使用工具 引入Tiff.js文件,引入前先进行下载安装 import Tiff from tiff.js引入显示图片组件 comp…

[AutoSAR系列] 1.3 AutoSar 架构

依AutoSAR及经验辛苦整理,原创保护,禁止转载。 专栏 《深入浅出AutoSAR》 1. 整体架构 ​ 图片来源: AutoSar 官网 从官往图中可以看出autosar作为汽车ECU软件架构,是通过分层来实现软硬件隔离。就像大多数操作系统一样&#xff…

老师都在用的成绩发布系统

成绩查询系统,不是什么高科技,就是通过一些代码和Excel表格的配合,实现学生自主查询成绩的功能。对,你没听错,就是自主查询,不再需要学生一个个问老师成绩了。 先说说系统的原理吧。当老师需要发布成绩时&a…

ubuntu 下的 使用anaconda 环境运行python 项目

pycharm部署django项目到云服务器的详细流程_编程网 anaconda 安装环境 Ubuntu安装Anaconda详细步骤(Ubuntu22.04.1,Anaconda3-2023.03)-CSDN博客 ubuntu下Anaconda安装与使用教程_ubuntu 运行anaconda_fakerth的博客-CSDN博客 Anaconda教…

docker - window Docker Desktop升级

文章目录 前言docker - window Docker Desktop升级 前言 如果您觉得有用的话,记得给博主点个赞,评论,收藏一键三连啊,写作不易啊^ _ ^。   而且听说点赞的人每天的运气都不会太差,实在白嫖的话,那欢迎常来…

13 结构性模式-装饰器模式

1 装饰器模式介绍 在软件设计中,装饰器模式是一种用于替代继承的技术,它通过一种无须定义子类的方式给对象动态的增加职责,使用对象之间的关联关系取代类之间的继承关系. 2 装饰器模式原理 //抽象构件类 public abstract class Component{public abstract void operation(); }…

HarmonyOS 音频开发指导:使用 OpenSL ES 开发音频播放功能

OpenSL ES 全称为 Open Sound Library for Embedded Systems,是一个嵌入式、跨平台、免费的音频处理库。为嵌入式移动多媒体设备上的应用开发者提供标准化、高性能、低延迟的 API。HarmonyOS 的 Native API 基于Khronos Group开发的OpenSL ES 1.0.1 API 规范实现&am…

C语言 sizeof 函数内部进行计算

直接看代码 #include <stdio.h> int main() {int i 2;int j;j sizeof(i i);printf("i %d, j %d", i ,j);return 0; }执行结果&#xff1a; 可以看到 i的值一直是没有变的&#xff0c; j 是int类型下 sizeof占用的大小为 4个字节&#xff0c;不是i的 22…

【Golang】简记操作:Centos安装、卸载、升级Golang运行环境

目录 安装 1、根据实际需求选择合适的golang版本 如下图&#xff0c;选择合适的版本&#xff0c;右键复制链接 2、在Centos选择合适的目录下载golang的源文件 3、解压golang的源文件&#xff0c;解压完成即可执行go命令 4、设置golang的全局环境变量&#xff08;/etc/pr…