返回顶部
首页 > 资讯 > 后端开发 > Python >postgres篇---docker安装postgres,python连接postgres数据库
  • 874
分享到

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

docker数据库python 2023-09-23 08:09:20 874人浏览 八月长安

Python 官方文档:入门教程 => 点击学习

摘要

postgres篇---Docker安装postgres,python连接postgres数据库 一、docker安装postgres1.1 安装Docker:1.2 从Docker Hub获

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

一、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语句。

cursor.execute(sql)
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()# 执行sqlcur.execute('select * from tname;')# 获取数据rows = cur.fetchall()for row in rows:    print(row)# 关闭连接conn.close()

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

来源地址:https://blog.csdn.net/m0_46825740/article/details/131068497

--结束END--

本文标题: postgres篇---docker安装postgres,python连接postgres数据库

本文链接: https://lsjlt.com/news/416163.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作