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

本文涉及的产品
PolarClaw,2核4GB
简介: 【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数据库、数据库生态工具、云原生智能化数据库管控平台,为阿里巴巴经济体以及各个行业的企业客户和开发者提供从公共云到混合云再到私有云的完整解决方案,提供基于云基础设施进行数据从处理、到存储、再到计算与分析的一体化解决方案。本节课带你了解阿里云数据库产品家族及特性。
相关文章
|
6月前
|
SQL 关系型数据库 数据库
Python SQLAlchemy模块:从入门到实战的数据库操作指南
免费提供Python+PyCharm编程环境,结合SQLAlchemy ORM框架详解数据库开发。涵盖连接配置、模型定义、CRUD操作、事务控制及Alembic迁移工具,以电商订单系统为例,深入讲解高并发场景下的性能优化与最佳实践,助你高效构建数据驱动应用。
789 7
|
7月前
|
关系型数据库 MySQL 数据库
阿里云数据库RDS费用价格:MySQL、SQL Server、PostgreSQL和MariaDB引擎收费标准
阿里云RDS数据库支持MySQL、SQL Server、PostgreSQL、MariaDB,多种引擎优惠上线!MySQL倚天版88元/年,SQL Server 2核4G仅299元/年,PostgreSQL 227元/年起。高可用、可弹性伸缩,安全稳定。详情见官网活动页。
1256 152
|
7月前
|
关系型数据库 MySQL 数据库
阿里云数据库RDS支持MySQL、SQL Server、PostgreSQL和MariaDB引擎
阿里云数据库RDS支持MySQL、SQL Server、PostgreSQL和MariaDB引擎,提供高性价比、稳定安全的云数据库服务,适用于多种行业与业务场景。
931 156
|
10月前
|
SQL 关系型数据库 MySQL
Go语言数据库编程:使用 `database/sql` 与 MySQL/PostgreSQL
Go语言通过`database/sql`标准库提供统一数据库操作接口,支持MySQL、PostgreSQL等多种数据库。本文介绍了驱动安装、连接数据库、基本增删改查操作、预处理语句、事务处理及错误管理等内容,涵盖实际开发中常用的技巧与注意事项,适合快速掌握Go语言数据库编程基础。
1275 213
|
7月前
|
数据采集 关系型数据库 MySQL
python爬取数据存入数据库
Python爬虫结合Scrapy与SQLAlchemy,实现高效数据采集并存入MySQL/PostgreSQL/SQLite。通过ORM映射、连接池优化与批量提交,支持百万级数据高速写入,具备良好的可扩展性与稳定性。
|
7月前
|
关系型数据库 MySQL 分布式数据库
阿里云PolarDB云原生数据库收费价格:MySQL和PostgreSQL详细介绍
阿里云PolarDB兼容MySQL、PostgreSQL及Oracle语法,支持集中式与分布式架构。标准版2核4G年费1116元起,企业版最高性能达4核16G,支持HTAP与多级高可用,广泛应用于金融、政务、互联网等领域,TCO成本降低50%。
|
7月前
|
关系型数据库 分布式数据库 数据库
阿里云数据库收费价格:MySQL、PostgreSQL、SQL Server和MariaDB引擎费用整理
阿里云数据库提供多种类型,包括关系型与NoSQL,主流如PolarDB、RDS MySQL/PostgreSQL、Redis等。价格低至21元/月起,支持按需付费与优惠套餐,适用于各类应用场景。
|
11月前
|
SQL 数据库 开发者
Python中使用Flask-SQLAlchemy对数据库的增删改查简明示例
这样我们就对Flask-SQLAlchemy进行了一次简明扼要的旅程,阐述了如何定义模型,如何创建表,以及如何进行基本的数据库操作。希望你在阅读后能对Flask-SQLAlchemy有更深入的理解,这将为你在Python世界中从事数据库相关工作提供极大的便利。
923 77
|
7月前
|
存储 数据库 开发者
Python SQLite模块:轻量级数据库的实战指南
本文深入讲解Python内置sqlite3模块的实战应用,涵盖数据库连接、CRUD操作、事务管理、性能优化及高级特性,结合完整案例,助你快速掌握SQLite在小型项目中的高效使用,是Python开发者必备的轻量级数据库指南。
643 0
|
存储 关系型数据库 数据库
【赵渝强老师】PostgreSQL的数据库
PostgreSQL的逻辑存储结构涵盖数据库集群、数据库、表、索引、视图等对象,每个对象有唯一的oid标识。数据库集群包含多个数据库,每个数据库又包含多个模式,模式内含表、函数等。通过特定SQL命令可查看和管理这些数据库对象。
274 4