postgres篇---docker安装postgres,python连接postgres数据库

news2024/12/27 11:57:01

postgres篇---docker安装postgres,python连接postgres数据库

  • 一、docker安装postgres
    • 1.1 安装Docker:
    • 1.2 从Docker Hub获取PostgreSQL镜像
    • 1.3 创建PostgreSQL容器
    • 1.4 访问PostgreSQL
  • 二. python连接postgres数据库
    • 2.1 connect连接
    • 2.2 cursor
    • 2.3 excute执行sql语句
    • 2.4 提交结果
    • 2.5 获取数据
    • 2.6 关闭连接

一、docker安装postgres

Docker是一种开源容器化平台,它允许开发人员在轻松可移植的环境中构建、部署和运行应用程序。PostgreSQL是一种强大的关系型数据库,它是一种开源软件,提供了高可靠性、可扩展性和安全性。

在Docker中使用PostgreSQL,您可以通过Docker Hub上的PostgreSQL官方镜像来创建一个容器,然后在其中运行PostgreSQL服务。以下是在Docker中使用PostgreSQL的一些常见步骤:

1.1 安装Docker:

请按照您的操作系统的指南安装Docker。安装完成后,您可以在终端中运行docker命令,验证Docker是否正确安装。

1.2 从Docker Hub获取PostgreSQL镜像

运行以下命令从Docker Hub上获取最新版本的PostgreSQL镜像:

docker pull postgres

在这里插入图片描述

1.3 创建PostgreSQL容器

运行以下命令以创建一个新的PostgreSQL容器。其中,-e 参数用于设置环境变量,-p 参数用于将容器端口映射到主机端口,-v 参数用于将主机目录挂载到容器内的目录。

docker run --name my-postgres -e POSTGRES_PASSWORD=mysecretpassword 
-e ALLOW_IP_RANGE=0.0.0.0/0  -p 5432:5432 -v /my/local/path:/var/lib/postgresql/data -d postgres

在上面的命令中,my-postgres是容器的名称,POSTGRES_PASSWORD是PostgreSQL的管理员psd,-p 5432:5432将容器的5432端口映射到主机的5432端口,/my/local/path 是主机上的目录(可自行设置),将用于容器中的PostgreSQL数据。

1.4 访问PostgreSQL

现在,您可以使用以下命令进入正在运行的容器:

docker exec -it my-postgres psql -U postgres

这将打开一个交互式PostgreSQL shell,您可以在其中执行SQL命令。

这些是在Docker中使用PostgreSQL的一些基本步骤。您还可以使用其他Docker命令来管理容器,例如docker stop、docker start和docker rm等。

二. python连接postgres数据库

python连接postgresql数据库

postgresql是常用的关系型数据库,并且postgresql目前还保持着全部开源的状态,所以我们今天就一起来学习一下,如何用python连接postgresql。
安装psycopg

pip install psycopg2

官方文档地址:

https://www.psycopg.org/docs/cursor.html

连接数据库操作流程

若是增、删、更等操作,则操作流程为:

  • connect连接
  • 获取游标对象cursor
  • 执行sql得到结果execute
  • 操作成功执行提交commit
  • 关闭连接释放资源

若是查询,则操作流程为:

  • connect连接
  • 获取游标对象cursor
  • 执行sql得到结果 execute
  • 获取数据
  • 关闭连接释放资源

查询结果和增删改其他操作步骤都一样,只有第四步的时候,有些许差别。

2.1 connect连接

connect连接

psycopg2.connect(dsn=None , connection_factory=None , cursor_factory=None , async=False , \*\*kwargs)

创建得到一个新的数据库会话并返回一个新的connection对象。
可以使用dsn参数将连接参数指定为libpq连接字符串:

conn = psycopg2.connect("dbname=test user=postgres password=secret")

或者用一组关键字参数:

conn = psycopg2.connect(dbname="test", user="postgres", password="secret")

或者两者混用,如果在两个源中指定了相同的参数名称,则关键字参数值将优先于dsn参数。
注意,需要dsn或至少一个与连接相关的关键字参数。
基本的连接参数:

  • dbname - 数据库名称
  • user - 用于验证的用户名
  • password - 用于验证的psd
  • host - 数据库主机地址
  • port - 连接的端口号(默认5432)

示例:

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

2.2 cursor

cursor

cursor ( name = None , cursor_factory = None , scrollable = None , withhold = False ) 

使用连接返回一个新cursor对象。

示例:

cursor = conn.cursor()

2.3 excute执行sql语句

从上面cursor()后得到一个游标对象,该游标对象使用execute方法或者executemany方法执行sql语句。

  • execute(query, vars=None)
cursor.execute(sql)
  • executemany(query, vars_list)
cursor.executemany(sql)

2.4 提交结果

若是增加,删除,更改表中的数据,修改后必须提交才能生效。

conn.commit()

2.5 获取数据

若是查询数据的时候,我们需要检索函数获取数据,常用的函数有fetchone(),fetchmany(),fetchall() 。

  • fetchone()
    返回一个元组,元组中是结果集的下一行。当没有数据可用时,则返回None。
  • fetchmany([size=cursor.arraysize])
    返回一个元组,元组中是下一组结果的结果集。当没有更多行可用时,返回一个空列表。
    每次调用要获取的行数由参数指定。如果未给出,则游标arraysize确定要获取的行数。
    在不传参数的情况下,默认只返回第一条数据,若是在括号里传入数字,表示获取几条数据,则最后的结果就会返回几条。
  • fetchall()
    获取查询结果的所有(剩余)行,将它们作为元组列表返回。如果没有更多记录可获取,则返回一个空列表。

2.6 关闭连接

conn.close()

示例

# -*- coding: utf-8 -*-
import psycopg2
## 建立connect 连接
conn = psycopg2.connect(database='test',user='postgres',password='xxxxxx',host='localhost',port='5432')

# 游标
cur = conn.cursor()

# 执行sql
# 建表
cur.execute('create table tname(id int,name varchar);')
# 插入数据
cur.execute('insert into tname values (1,\'张三\');');
t_table=((2,'李四'),(3,'王五'))
cur.executemany('insert into tname values (%s,%s)',t_table)

# 提交数据
conn.commit()

# 关闭连接
conn.close()

得到结果如下图:
在这里插入图片描述

import psycopg2
## 建立connect 连接
conn = psycopg2.connect(database='test',user='postgres',password='xxxxxx',host='localhost',port='5432')

# 游标
cur = conn.cursor()

# 执行sql
cur.execute('select * from tname;')

# 获取数据
rows = cur.fetchall()
for row in rows:
    print(row)

# 关闭连接
conn.close()

得到结果如下图:
在这里插入图片描述
好啦,本文到这里就结束啦。
感谢您的阅读~

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

ubuntu22.04下用opencv4.5.4访问照片、视频、摄像头

本文主要记录近期在学习opencv使用过程中的一些细节 前言:ubuntu22.04 OpenCV4.6.0(c)环境配置 opencv的安装过程可参考下面博文,亲测有效(容易出现问题的地方在安装下面依赖的时候,一般会出现报错,需要自己换源&…

让你不再疑惑音频如何转文字

随着科技的不断发展,我们现在可以通过各种智能设备来轻松地录制音频。但是,当我们需要将音频中的内容转换成文字时,该怎么办呢?这时候,转换工具就派上用场了!那么你知道音频怎么转文字吗?接下来…

CSS2学习笔记

一、CSS基础 1.CSS简介 CSS 的全称为:层叠样式表 ( Cascading Style Sheets ) 。CSS 也是一种标记语言,用于给 HTML 结构设置样式,例如:文字大小、颜色、元素宽高等等。简单理解: CSS 可以美化 HTML , 让 HTML 更漂亮…

【产品经理】成熟产品狗必备特质

在自己从事产品经理这个职位的3年间,看过不少产品经理成长相关的文章书籍,涵盖了挺多经验、素质、能力,平时工作中也会注意学以致用,所以每每回顾此事,都觉得这对自己的工作、个人成长起到了莫大的推进作用。 1、外部合…

Docker是什么、有什么用的介绍

文章目录 1.背景2. Docker 是什么?3.Docker 容器与虚拟机的区别4.Docker 的 6 大优势1、更高效地利用系统资源2、更快的启动时间3、一致的运行环境4、持续交付和部署5、更轻松迁移6、更轻松的维护和拓展 小结 知识搬运工: 原文出自: 原文链接…

网络渗透技术如何自学,自学黑客要多久

学习网络渗透技术是一件靠兴趣驱动的事情,只有强烈热爱一件事才能持之以恒的去做,对于那些三分钟热度的人来说还是劝你放弃吧,因为网络渗透技术自学需要很多方面的知识,没耐心是无法学会的,当然除了有想要学习的决心之…

企业研发提效抓手,揭秘云原生的效能“奇点”

导语 | 在云原生时代,研发效能治理面临新的挑战,同时也获得了新的视角。如何更好地利用云原生技术的优势,从而在根本上提升研发效能,已成为许多企业数字化转型过程中的“必答题”。今天,我们特别邀请了 Thoughtworks 创…

Git操作方法

目录 Git是什么 Git特点 Git作用 Git原理 集中式 分布式 Git安装 修改语言 Git操作 1.初始化Git仓库 2.提交工作区的内容到版本库 3.查看版本记录 4.版本回退 5.版本前进 Git 命令 通用操作 工作状态 版本回退 版本前进 远程仓 1.GitHub 2.GitLab 3.码云…

Amp it up翻译(持续更新)

最近闲来无事,看到了阮一峰在推荐这本书,无奈是英文的,但是机器翻译过来又看不懂。反正自己看的时候也要翻译。于是就自己看的时候,翻译完,理解完顺便写上去,给懒的同学看一下。 书的目录 书的目录太长了&…

C语言---自定义类型:结构体,枚举,联合

🚀write in front🚀 📝个人主页:认真写博客的夏目浅石. 🎁欢迎各位→点赞👍 收藏⭐️ 留言📝 📣系列专栏:凡人修C传 💬总结:希望你看完之后&…

FANUC机器人PROFIBUS DP通信配置方法

FANUC机器人PROFIBUS DP通信配置方法 1. 前提条件: 机器人Profibus功能确认:确认机器人是否加装了Profibus功能。按下示教器MENU—Setup,可查看是否已安装所需的软件,如下图所示,说明已安装profibus功能。 西门子PLC一侧需要安装对应的GSD文件,可从以下链接获取: FANU…

JDBC Utils 详解(通俗易懂)

目录 一、前言 二、JDBCUtils说明 1.背景及起因 : 2.示意图 : 3.JDBCUtils类的定义 三、JDBCUtils应用 1.DML的应用 : 2.DQL的应用 : 四、总结 一、前言 第三节内容,up主要和大家分享一下JDBC Utils方面的内容。注意事项——①代码中的注释也很重要&#x…

暴力递归到动态规划(三)

⭐️前言⭐️ 本篇文章是从暴力递归到动态规划的第三章。 🍉欢迎点赞 👍 收藏 ⭐留言评论 📝私信必回哟😁 🍉博主将持续更新学习记录收获,友友们有任何问题可以在评论区留言 🍉博客中涉及源码及…

chatgpt赋能python:Python快速创建列表

Python快速创建列表 在Python编程中,列表是一种非常常见的数据类型,它可以容纳多个值。创建列表有多种方式,但是在不同场景下,我们需要使用不同的方法来创建一个高效的列表。本文主要介绍如何快速创建列表的不同方法。我们将深入…

K-verse 合作伙伴访谈|与 Studio Dragon 一起进入韩剧元宇宙世界

穿越时空的韩剧元宇宙。 Studio Dragon 是全球排名第一的生活创作者 CJ ENM 的子公司,是引领韩剧的韩国代表性戏剧工作室,一个以无限故事内容让世界着迷的优质故事讲述者。 通过与 The Sandbox 的合作,我们将提供一种全新体验,让用…

openGauss5.0企业版使用指南之系统架构

文章目录 1. 产品定位2. 3.x版本和5.x版本比对3. openGauss 5.0版本架构4. openGauss 5.0 特点 背景:今年3月openGauss 5.0发布,升级了资源池化内核能力和DataKit数据全生命周期管理工具,整体在性能、安全性与易用性方面均有大幅提升。本次大…

vue-admin-template_home增加全屏开关

1. 安装 npm install screenfull --save 这个指令安装最新版本 npm install screenfull3 VUE2.x的可以指定对应的版本,这样是安装最新的3.x的版本 2. 导入svg文件 在src\icons\svg文件夹下,导入exit-fullscreen.svg和fullscreen.svg, exit-fullsc…

Git仓库相关操作

目录 Git作用 集中式 分布式 Git操作Git区域概念 Git命令 远程仓库 新建项目 新建仓库 克隆项目 推送项目 拉取项目 Git作用 作用:版本控制多人协作 集中式 典型代表:SVN 特点:所有的版本库都存在中央服务器,本地备份…

线性代数3:矩阵

目录 矩阵研究的是什么呢? 逆阵 什么叫做逆阵? 例题1: 例题2: 逆阵的存在性 定理1: 定理2: 定理3: 定理4: 拉普拉茨方程 方阵可以的条件 例题3: Note1&#xff…

Hive 巡检工具-对表数据量、主键重复数量以及每个字段标签的空值检测

目录 背景 巡检工具 数据准备 1、准备一张配置信息表,该表保存需要巡检的数据信息(规则code不可重复) 2、pyspark代码编写 结果表数据展示 规则自动检测并自增 数据准备 背景 该需求是利用pyspark对部分重点产出表进行数据质量监控。主…