使用 PostgreSQL 和 Python 实现数据库操作

本文涉及的产品
云原生数据库 PolarDB MySQL 版,通用型 2核4GB 50GB
云原生数据库 PolarDB PostgreSQL 版,标准版 2核4GB 50GB
简介: 【10月更文挑战第2天】使用 PostgreSQL 和 Python 实现数据库操作

引言

PostgreSQL 是一个功能强大的开源对象关系型数据库系统,因其稳定性、强大的功能和遵从 SQL 标准而受到广泛欢迎。结合 Python 这种流行的语言,我们可以轻松地实现对数据库的操作,如插入、查询、更新和删除记录。本文将详细介绍如何使用 Python 的 psycopg2 库来连接 PostgreSQL 数据库,并执行基本的 CRUD(创建、读取、更新、删除)操作。

准备工作

在开始之前,请确保你的环境中已经安装了 PostgreSQL 数据库。如果还没有安装,请访问 PostgreSQL 官方网站下载并安装适合你操作系统的版本。

另外,还需要安装 Python 的 psycopg2 库,它是一个 PostgreSQL 数据库适配器。可以通过 pip 安装:

pip install psycopg2

创建数据库和表

首先,我们需要创建一个数据库,并在其中创建一张表来存放数据。

  1. 创建数据库

    打开 PostgreSQL 的命令行工具 psql,并登录到默认的 postgres 用户:

    psql -U postgres
    

    创建一个新的数据库 exampledb

    CREATE DATABASE exampledb;
    
  2. 创建表

    切换到新创建的数据库 exampledb

    \c exampledb
    

    接下来,创建一张名为 employees 的表,包含 id, name, age, 和 position 字段:

    CREATE TABLE employees (
        id SERIAL PRIMARY KEY,
        name VARCHAR(255) NOT NULL,
        age INT,
        position VARCHAR(100)
    );
    

使用 Python 连接数据库

现在,我们将使用 Python 脚本来连接到刚刚创建的数据库,并执行一些基本的 CRUD 操作。

  1. 导入必要的库

    首先,我们需要导入 psycopg2 库:

    import psycopg2
    from psycopg2 import Error
    
  2. 连接数据库

    使用 psycopg2 库连接到 PostgreSQL 数据库:

    try:
        # 连接到 PostgreSQL 数据库
        connection = psycopg2.connect(
            user="postgres",
            password="your_password",
            host="127.0.0.1",
            port="5432",
            database="exampledb"
        )
        print("Database connected successfully")
    
    except (Exception, Error) as error:
        print("Error while connecting to PostgreSQL", error)
    
  3. 插入数据

    我们将向 employees 表中插入一条记录:

    cursor = connection.cursor()
    
    insert_query = """ INSERT INTO employees (name, age, position)
                       VALUES (%s,%s,%s) RETURNING id; """
    
    record_to_insert = ('John Doe', 30, 'Software Developer')
    cursor.execute(insert_query, record_to_insert)
    inserted_id = cursor.fetchone()[0]
    connection.commit()
    count = cursor.rowcount
    print(count, "Record inserted successfully, ID:", inserted_id)
    
  4. 查询数据

    查询 employees 表中的所有记录:

    select_query = """ SELECT * FROM employees """
    cursor.execute(select_query)
    records = cursor.fetchall()
    
    print("Printing each row")
    for row in records:
        print("ID =", row[0], )
        print("Name =", row[1])
        print("Age =", row[2])
        print("Position =", row[3], "\n")
    
  5. 更新数据

    更新 employees 表中的一条记录:

    update_query = """ UPDATE employees SET age = %s WHERE id = %s """
    update_record = (35, inserted_id)
    cursor.execute(update_query, update_record)
    connection.commit()
    count = cursor.rowcount
    print(count, "Record updated successfully ")
    
  6. 删除数据

    删除 employees 表中的一条记录:

    delete_query = """ DELETE FROM employees WHERE id = %s """
    delete_record = (inserted_id,)
    cursor.execute(delete_query, delete_record)
    connection.commit()
    count = cursor.rowcount
    print(count, "Record deleted successfully ")
    
  7. 关闭数据库连接

    最后,关闭游标和连接:

    cursor.close()
    connection.close()
    print("PostgreSQL connection is closed")
    

结论

本文详细介绍了如何使用 Python 和 psycopg2 库来操作 PostgreSQL 数据库。我们创建了一个数据库和表,然后通过 Python 脚本实现了连接数据库、插入、查询、更新和删除数据等操作。这些技能是开发基于数据库应用的基本要求,掌握了这些之后,便可以在更复杂的场景中运用它们。无论是在 Web 开发还是数据分析等领域,熟悉数据库操作都是非常有用的。

相关实践学习
使用PolarDB和ECS搭建门户网站
本场景主要介绍基于PolarDB和ECS实现搭建门户网站。
阿里云数据库产品家族及特性
阿里云智能数据库产品团队一直致力于不断健全产品体系,提升产品性能,打磨产品功能,从而帮助客户实现更加极致的弹性能力、具备更强的扩展能力、并利用云设施进一步降低企业成本。以云原生+分布式为核心技术抓手,打造以自研的在线事务型(OLTP)数据库Polar DB和在线分析型(OLAP)数据库Analytic DB为代表的新一代企业级云原生数据库产品体系, 结合NoSQL数据库、数据库生态工具、云原生智能化数据库管控平台,为阿里巴巴经济体以及各个行业的企业客户和开发者提供从公共云到混合云再到私有云的完整解决方案,提供基于云基础设施进行数据从处理、到存储、再到计算与分析的一体化解决方案。本节课带你了解阿里云数据库产品家族及特性。
相关文章
|
1月前
|
存储 关系型数据库 MySQL
一个项目用5款数据库?MySQL、PostgreSQL、ClickHouse、MongoDB区别,适用场景
一个项目用5款数据库?MySQL、PostgreSQL、ClickHouse、MongoDB——特点、性能、扩展性、安全性、适用场景比较
|
20天前
|
关系型数据库 MySQL 数据库连接
python脚本:连接数据库,检查直播流是否可用
【10月更文挑战第13天】本脚本使用 `mysql-connector-python` 连接MySQL数据库,检查 `live_streams` 表中每个直播流URL的可用性。通过 `requests` 库发送HTTP请求,输出每个URL的检查结果。需安装 `mysql-connector-python` 和 `requests` 库,并配置数据库连接参数。
120 68
|
9天前
|
关系型数据库 分布式数据库 数据库
PostgreSQL+Citus分布式数据库
PostgreSQL+Citus分布式数据库
39 15
|
17天前
|
SQL 关系型数据库 数据库
PostgreSQL性能飙升的秘密:这几个调优技巧让你的数据库查询速度翻倍!
【10月更文挑战第25天】本文介绍了几种有效提升 PostgreSQL 数据库查询效率的方法,包括索引优化、查询优化、配置优化和硬件优化。通过合理设计索引、编写高效 SQL 查询、调整配置参数和选择合适硬件,可以显著提高数据库性能。
108 1
|
20天前
|
存储 关系型数据库 MySQL
MySQL vs. PostgreSQL:选择适合你的开源数据库
在众多开源数据库中,MySQL和PostgreSQL无疑是最受欢迎的两个。它们都有着强大的功能、广泛的社区支持和丰富的生态系统。然而,它们在设计理念、性能特点、功能特性等方面存在着显著的差异。本文将从这三个方面对MySQL和PostgreSQL进行比较,以帮助您选择更适合您需求的开源数据库。
80 4
|
21天前
|
关系型数据库 MySQL 数据处理
探索Python中的异步编程:从asyncio到异步数据库操作
在这个快节奏的技术世界里,效率和性能是关键。本文将带你深入Python的异步编程世界,从基础的asyncio库开始,逐步探索到异步数据库操作的高级应用。我们将一起揭开异步编程的神秘面纱,探索它如何帮助我们提升应用程序的性能和响应速度。
|
1月前
|
存储 缓存 Shell
你知道 Python 其实自带了小型数据库吗
你知道 Python 其实自带了小型数据库吗
20 2
你知道 Python 其实自带了小型数据库吗
|
1月前
|
Web App开发 SQL 数据库
使用 Python 解析火狐浏览器的 SQLite3 数据库
本文介绍如何使用 Python 解析火狐浏览器的 SQLite3 数据库,包括书签、历史记录和下载记录等。通过安装 Python 和 SQLite3,定位火狐数据库文件路径,编写 Python 脚本连接数据库并执行 SQL 查询,最终输出最近访问的网站历史记录。
|
1月前
|
SQL 机器学习/深度学习 数据采集
SQL与Python集成:数据库操作无缝衔接22.bijius.com
自动化数据预处理:使用Python库(如Pandas)自动清洗、转换和准备数据,为机器学习模型提供高质量输入。 实时数据处理:集成Apache Kafka或Amazon Kinesis等流处理系统,实现实时数据更新和分析。
|
1月前
|
存储 关系型数据库 数据库
轻量级数据库的利器:Python 及其内置 SQLite 简介
轻量级数据库的利器:Python 及其内置 SQLite 简介