使用 Python 连接到 PostgreSQL 数据库

news2024/11/28 19:03:41

本文介绍了创建与 PostgreSQL 上的数据库的连接的过程。 我们需要安装 PostgreSQL 和创建数据库等先决条件,如下所述。


在系统中安装 PostgreSQL

顾名思义,PostgreSQL 是一款为高效管理数据库系统而创建的 SQL 系统软件。

在连接Python之前需要创建数据库。 Postgres,实现它。

许多刚开始学习数据库开发的初学者仍然感到困惑。 据了解,数据库是使用 pgAdmin 而不是 PostgreSQL 创建的。

实际上,前者管理数据库,而后者是构建数据库的框架。

在创建数据库之前,pgAdmin 需要与 PostgreSQL 链接。 所以,首先需要安装PostgreSQL。

Postgres的安装包可以在PostgreSQL官网的下载区找到。 然后,用户可以从那里下载并安装该应用程序。

有多种安装程序可用于 Mac、Linux 和 Windows 等操作系统。

用户还可以获取源代码并在其 PC 上手动编译并安装 pgAdmin4。

pgAdmin 是一个用于管理在 PostgreSQL 上运行的数据库的有效工具。 可以在应用程序的在线网页上找到安装程序等可下载文件。

人们可以从 pgAdmin 的所有稳定版本的列表中进行选择,以及与 PostgreSQL 过程类似的其他安装包发行版。

一旦 pgAdmin 安装到系统中,就可以创建数据库。


使用 pgAdmin 创建数据服务器和数据库

本节包含两个小节。 第一部分解释如何创建数据服务器,第二部分重点介绍数据库。

在 pgAdmin 中创建数据服务器

在创建任何数据库之前,需要正确设置 pgAdmin。 系统会提示您输入主密码,该密码将在创建或访问新数据库时使用。

提供密码后将出现 pgAdmin 网页。 必须搭建新的服务器来生成新的数据库。

添加新服务器按钮会创建一个对话窗口,可以在其中构建新服务器。

在 pgAdmin 中添加新服务器

首先显示的窗口提供了正在设置的服务器的功能。 在本文中,其中一些将由用户输入提供,而其他一些则由系统生成并保持原样。

首先,需要服务器的名称。 之后,转到连接菜单。

那里需要主机名,通常是 localhost。 端口必须设置为 5432。

遵循以上几点就足以创建一个有用的数据服务器。

在 pgAdmin 中创建数据库

一旦数据服务器启动并运行,就可以创建数据库。 创建的服务器显示在应用程序窗口的左侧,称为仪表板。

左侧面板中服务器名称旁边有一个下拉图标。 单击此图标时会弹出密码对话框,请求系统的主密码。

在 pgAdmin 中输入主密码

菜单显示系统内创建的所有服务器。 它保持停用状态,直到通过单击并出现密码提示将其激活。

右键单击数据库区域并选择创建。 为数据库命名,然后在所有者部分选择 postgres; 然后,必须设置数据库定义。

数据库的定义有多个选项需要设置。 以下是众多可用选项中的一些更重要的选项。

  1. 编码必须设置为 - UTF - 8。
  2. 模板应在 Postgres 中设置。
  3. 表空间应设置为 pg_default。

排序规则和字符类型应按原样设置,而连接限制设置为-1。 转到标有 sql 的菜单将给出此处使用的查询的概述。

单击“保存”将创建一个数据库。


将 PostgreSQL 数据库连接到 Python 的步骤

使用 Python 连接到数据库分为三个步骤。 首先,服务器的信息存储在配置文件中。

将创建一个 Python 文件,用于解析配置 (.ini) 文件并在下一步中加载服务器。 在最后一步中,创建一个连接数据库的 Python 文件。

在本文中,程序使用 psycopg2 导入包连接到 PostgreSQL 数据库,获取数据库版本,然后打印它们。


创建存储服务器信息的配置 (.ini) 文件

该文件存储与服务器相关的详细信息,有助于 config.py 文件配置数据库。 文件头位于文件的顶部,用于声明所使用的 RDBMS。

  1. host - 此处提供所使用的主机或服务器。
  2. database - 此处给出了需要针对的特定数据库。
  3. user - 用户应指定为 postgres,因为它是 RDBMS。
  4. password - 必须在此处输入创建数据库时在 pgAdmin 中给出的主密码。

服务器信息

创建信息文件后,可以在配置文件中使用它。


创建解析配置文件的 Python 文件

该程序使用导入包configparser。 方法配置使用两个参数声明:文件名和部分。

变量解析器被初始化,从变量文件名中读取文件。

下面是从数据库中提取项目的 get 方法。 get 部分放在 if-else 语句内,其中 else 方法处理异常。

最后返回变量数据库。

from configparser import ConfigParser

def config(filename='server_info.ini', section='postgresql'):
    parser = ConfigParser()
    parser.read(filename)

    database = {}
    if parser.has_section(section):
        params = parser.items(section)
        for param in params:
            database[param[0]] = param[1]

    else:
        raise Exception('Section {0} not found in the {1} file'.format(section, filename))

    return database

连接 PostgreSQL 数据库的步骤

该程序有两个导入文件。

  1. psycopg2
  2. config

创建了一个连接到 PostgreSQL 数据库服务器的方法 connect。

声明了一个变量 param,用于读取连接的参数。 这些参数用于连接到数据库服务器。

语法 psycopg2.connect(**params) 加载连接参数并连接到数据库服务器。 声明了另一个变量 var_cur,用于存储由 connection.cursor 语法创建的游标。

连接建立后,将显示数据库的 PostgreSQL 版本。 var_cur.execute 执行语句 SELECT version()

该版本被加载到变量 version_of_database 中,然后由 fetchone() 函数显示,该函数一次获取单个元素。 然后打印该变量。

获取数据库版本后,使用 var_cur.close() 关闭游标。

添加异常处理块以引发错误异常。 在 except 块内,当无法连接到数据库或未找到数据库时,程序会打印一条错误消息。

在异常处理结束时,添加一个finally 块,使用语法 connection.close() 关闭连接。 连接关闭后,数据库会打印一条消息,确认连接已关闭。

最后调用方法connection。

import psycopg2
from config import config


def connect():
    connection = None
    try:
        params = config()

        print('Connection made to the postgresql database')
        connection = psycopg2.connect(**params)

        var_cur = connection.cursor()

        print('Database version is - ')
        var_cur.execute('SELECT version()')

        version_of_database = var_cur.fetchone()
        print(version_of_database)

        var_cur.close()
    except (Exception, psycopg2.DatabaseError) as error:
        print(error)
    finally:
        if connection is not None:
            connection.close()
            print('Database connection closed.')


if __name__ == '__main__':
    connect()

输出:

使用 Python 连接到 PostgreSQL 数据库


总结

本文讨论数据库创建并解释如何在 PostgreSQL 中创建数据库。 软件工具 pgAdmin 的不同功能。

读者将详细学习如何使用 Python 连接数据库,以便快速掌握并在实际项目中使用。

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

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

相关文章

C字符串函数内存函数的模拟实现和理解

目录 1. 字符串操作函数 1.1. 求字符串长度 1.1.1. strlen 1.2. 长度不受限制的函数 1.2.1. strcpy 1.2.2. strcat 1.2.3. strcmp 1.3. 长度受到限制的字符串函数 1.3.1. strncpy 1.3.2. strncat 1.3.3. strncmp 1.4. 字符串查找函数 1.4.1. strstr 1.4.2. strto…

辅助驾驶功能开发-功能规范篇(22)-3-L2级辅助驾驶方案功能规范

1.3.3 TLA系统功能定义 1.3.3.1 状态机 1.3.3.2 状态迁移图 1.3.3.3 功能定义 1.3.3.3.1 信号需求列表 1.3.3.3.2 系统开启关闭 1)初始化 车辆上电后,交通灯辅助系统(TLA)进行初始化,控制器需在 220ms 内发出第一帧报文,并在 3s 内完成内部自检,同时上电 3s 内不进行…

wps表格按分隔符拆分单元格

有数据如下;看选中区域,一个单元格中有一个v,空格,然后有三个数值,以空格分开;点击菜单中的数据-分列; 弹出分列向导;选择 分隔符号; 选择分隔符为空格;出现预…

【vtk学习笔记1】编译安装vtk9.2.6,运行官方例子

一、编译安装vtk-9.2.6 1. 下载VTK。推荐从github下载。目前从VTK官网只能下载最新的RC版或者以前的老版本,我是在github上下载的vtk9.2.6 tag版本。 2. 用Cmake-gui配置Visual Studio工程。主要注意配置VTK安装的路径、是否支持QT,需要的话正确配置Qt5…

3.6 纹理压缩——包体瘦身术

一、什么是纹理压缩 纹理压缩是为了解决内存、带宽问题,专为在计算机图形渲染系统中存储纹理而使用的图像压缩技术。 二、为什么要纹理压缩 图片格式 图片格式是图片文件的存储格式,通常在磁盘、内存中存储和传输文件时使用。例如:JPG、PNG…

JAVA数据类型和变量

一、字面常量 常量即程序运行期间,固定不变,不可修改的量称为常量。 public class Demo{public static void main(String[] args){System.Out.println("hello world!");System.Out.println(100);System.Out.println(3.14);System.Out.println(A);System…

python项目之酒店客房入侵检测系统的设计与实现

项目简介 酒店客房入侵检测系统的设计与实现实现了以下功能: 1、控制台: 控制台是整个系统的首页面。在控制台中,酒店的客房管理人员能够在该页面中查看到当前的空余客房数量、当前在店的客房人数、当前的已用客房数量、当前酒店全部的客房…

【顺序栈的出栈,链栈的表示和实现,递归定义】

文章目录 顺序栈的出栈 链栈的表示和实现链表的初始化判断链栈是否为空链栈的入栈链栈的出栈 递归定义函数的调用过程 顺序栈的出栈 (1)判断是否栈空,若空则出错(下溢)。 (2)获取栈顶元素e。 &…

Java题:查找单链表中第 k 个节点元素的值

遇到过一道奇奇怪怪的Java题,就整理出自己的想法,不知道对不对,还望大佬们指导。 题目 给定一个单链表,查找单链表中第 k 个节点元素的值,同时要求使用时间复杂度低的算法实现。 单链表的定义如下: cla…

【深度学习】吴恩达课程笔记(一)——深度学习概论、神经网络基础

笔记为自我总结整理的学习笔记,若有错误欢迎指出哟~ 吴恩达课程笔记——深度学习概论、神经网络基础 一、概念区别1.深度学习与机器学习2.深度学习与神经网络 二、什么是神经网络1.分类2.特点3.工作原理4.神经网络示意图5.神经网络进行监督学习6.深度学习的发展 三、…

mathtype怎么更改编号 mathtype章节编号错乱怎么办

mathtype作为一款功能强大的公式编辑器,使用范围广泛,与多款软件兼容。但新手可能会对mathtype的操作不熟悉,不知道如何在mathtype中更改编号,以及解决章节编号错乱问题。本文将围绕mathtype怎么更改编号,mathtype章节…

Ansible 安装部署及常用命令和17个模块详解

目录 Ansible 1 ansible 环境安装部署 1.1 管理端安装 ansible 1.2 ansible 目录结构 1.3 配置主机清单 1.4 配置密钥对验证 2 ansible 命令行模块 2.1 command 模块 2.2 shell 模块 2.3 cron 模块 2.4 user 模块 2.5 group 模块 2.6 copy 模块 2.7 file 模块 2.…

磁盘的结构(磁道,扇区,盘面,柱面,物理地址)

目录 1.磁盘、磁道、扇区的概念1.磁盘2.磁道3.扇区 2.如何在磁盘中读/写数据3.盘面、柱面的概念4.磁盘的物理地址1.根据地址读取一个“块” 5.磁盘的分类1.活动头磁道2.固定头磁盘3.根据盘片是否可更换 1.磁盘、磁道、扇区的概念 1.磁盘 磁盘的表面由一些磁性物质组成&#xf…

VS Code打开新的文件夹,会覆盖原来的文件夹。如何保持原来的文件夹并新打开一个窗口

默认打开新文件夹时,会覆盖掉当前的窗口,导致每次只能看一个项目文件夹。想让其打开新文件夹时,以新窗口打开,不覆盖当前窗口,可以进行如下设置。 然后重启VS Code就可以生效了!可以同时打开多个文件夹。效…

CSS宽度100%和宽度100vw之间有什么不同?

vw和vh分别代表视口宽度和视口高度。 使用width: 100vw代替的区别在于width: 100%,虽然100%将使元素适合所有可用空间,但视口宽度具有特定的度量,在这种情况下,可用屏幕的宽度 。 如果设置样式body { margin: 0 },则1…

网络原理之IP协议

文章目录 前言IP 协议的协议头格式地址管理1. 动态分配 IP2. NAT机制(网络地址转换)NAT 机制是如何工作的 3. IPv6 网段划分子网掩码路由选择 前言 前面我们学习了关于 UDP 协议和 TCP 协议方面的内容,这些都是网络传输中传输层方面的协议&a…

WebGIS瓦片地图添加水印(矢量瓦片、栅格瓦片)

水印技术 水印能为收到版权信息产品归属提供有力的证据, 并能够监视被保护数据的传播, 真伪鉴别以及非法拷贝控制等.在现今流行的线上地图同样需要水印技术, 保护地图数据.本文将介绍如何实现瓦片地图水印添加, 包括栅格瓦片、矢量瓦片. 在探索过程中, 参考了《前端水印生成方案…

NTRU 加密方案

参考文献: [Rivest97] Rivest R L. All-or-nothing encryption and the package transform[C]//Fast Software Encryption: 4th International Workshop, FSE’97 Haifa, Israel, January 20–22 1997 Proceedings 4. Springer Berlin Heidelberg, 1997: 210-218.[…

云安全-云原生技术架构(Docker逃逸技术-特权与危险挂载)

0x00 云原生技术-docker docker容器和虚拟机的对比:前者是将运行环境打包,封装一个环境。后者是将整个系统打包,封装一个系统。在操作使用上来说各有利弊。 0x01 docker容器的三种逃逸类型 特权模式启动(不安全的启动方式&…

Qt5.15:MinGW64位编译Oracle 19c数据库驱动及代码测试 - 安装时没有选Sources处理办法

文章目录 0 代码仓库1 环境以及条件说明2 准备一:下载Oracle 19c驱动,需要下载两个包,注意分x86和x642.1 32位2.2 64位2.3 新建目录并解压缩2.4 记录路径2.4.1 x86需要的路径2.4.2 x64需要的路径 3 准备二:下载Sources源代码的两种…