Python - 关系型数据库

2025年1月5日 | 阅读8分钟

Python 是一种高级、解释型编程语言,以其简洁和清晰而闻名。它由 Guido van Rossum 在 20 世纪 80 年代末创建,强调代码清晰度和直观的语法,这使其成为初学者和专家都非常理想的语言。Python 支持多种编程范例,如过程式、面向对象和函数式编程。它拥有一个庞大而现代化的库,以及一个蓬勃发展的第三方应用程序生态系统,可用于各种任务,从 Web 开发到数据分析和机器学习。Python 的多功能性和易用性促使其在 Web 开发、科学计算、人工智能和自动化等各个领域得到广泛应用。其动态特性,加上强大的社区支持和丰富的文档,使 Python 成为构建各种应用程序的热门选择。

数据库

在 Python 中,数据库是指存储在计算机系统中的有序数据集,通常以表的形式用行和列来组织。Python 提供了与数据库交互的各种库和模块,包括 SQLite、MySQL、PostgreSQL 等。这些库使开发人员能够使用 Python 代码在数据库中创建、读取、更新和删除数据,从而促进了应用程序中的数据管理和操作。通过利用 Python 的数据库功能,开发人员可以构建强大且可扩展的软件解决方案,根据其应用程序的需求有效地存储和检索数据。

关系型数据库

关系型数据库是结构化的数据存储系统,它将数据组织成具有行和列的表,并使用关系模型在这些表之间建立关系。

主要特点

  • 结构化数据存储: 关系型数据库将数据组织成表,其中每个表代表一个实体或概念,每一行代表一个唯一的记录,而列代表属性或字段。
  • ACID 事务: 关系型数据库通过 ACID(原子性、一致性、隔离性、持久性)事务确保数据的完整性和一致性。这些事务即使在系统故障发生时,也保证数据库操作要么完全完成,要么根本不完成。
  • SQL(结构化查询语言): SQL 是与关系型数据库交互的标准语言。Python 提供了 SQLAlchemy 等库来以编程方式执行 SQL 查询,从而可以直接从 Python 代码进行数据库操作。
  • 数据完整性约束: 关系型数据库通过主键、外键、唯一约束和检查约束等约束来强制执行数据完整性。这些约束可确保数据保持一致和准确。
  • 范式化: 关系型数据库采用范式化技术来最大限度地减少数据冗余和依赖性,保持高效的存储,并减少数据操作期间出现异常的风险。
  • 连接和关系: 关系型数据库使用主键和外键在表之间建立关系,通过连接操作实现相关数据的有效查询。Python 的 ORM 库(如 SQLAlchemy)通过将它们表示为 Python 对象来简化与关系的处理。
  • 索引和性能优化: 关系型数据库支持索引,通过提供对特定数据子集的快速访问来提高查询性能。Python 开发人员可以利用数据库特定的索引和优化技术来提高应用程序的性能。
  • 并发控制: 关系型数据库通过锁定和隔离级别等机制来控制数据的并发访问,以防止在多用户环境中出现数据损坏并确保数据一致性。
  • 可伸缩性和复制: 关系型数据库提供分片和复制等可伸缩性选项,以处理不断增长的数据量和用户负载。Python 开发人员可以利用数据库集群和复制功能来分发工作负载并确保高可用性。
  • ORM 支持: 对象关系映射(ORM)库(如 Python 中的 SQLAlchemy)提供了与关系型数据库交互的更高级别的抽象。它们允许开发人员将数据库实体作为 Python 对象进行处理,从而简化了数据操作并减少了样板代码。

关系模型

关系模型是用于在关系数据库管理系统(RDBMS)中组织和结构化数据的概念框架。Edgar F. Codd 在 20 世纪 70 年代初提出了它,并已成为大多数现代数据库系统的基础。以下是对关系模型中关键概念的解释。

  • 表(也称为关系)是关系模型的基本构建块。它们代表了组织成行和列的相关数据集合。
  • 每个表都包含一组命名的列(属性),每个列定义特定类型的数据,以及行(元组),每个行代表一个单独的记录或实体。
  • 例如,在用于管理员工信息的数据库中,“Employees”表可能包含“EmployeeID”、“FirstName”、“LastName”、“Department”等列。

行(元组)

  • 行,也称为元组或数据,代表表中的单独数据项。
  • 每一行都包含一组固定值,对应于表中定义的每个列,代表一个特定的记录或实体。
  • 例如,“Employees”表中的一行可能包含(101、'John'、'Doe'、'Sales')等值。

列(属性)

  • 列通过指定每个字段中可以存储的数据类型来定义表中数据的结构。
  • 每列都有一个唯一的名称和一个数据类型,该数据类型决定了它可以保存的数据种类(例如,整数、字符串、日期等)。
  • 例如,在“Employees”表中,“FirstName”列可能具有字符串数据类型,而“EmployeeID”列可能具有整数数据类型。

  • 键是唯一标识表中每一行的属性或属性组合。
  • 主键是唯一标识表中每个记录并保证数据完整性和一致性的唯一键。
  • 外键通过引用另一个表的主键来建立表之间的关系。
  • 例如,在“Employees”表中,“EmployeeID”列可以作为主键,唯一标识每个员工记录。如果包含“Departments”的另一个表具有“DepartmentID”列,则它可以在“Employees”表中被引用为外键,以在员工和部门之间建立关系。

关系

  • 关系定义了关系数据库中表之间的关联或连接。
  • 存在多种关系类型,包括一对一、一对多和多对多,每种类型代表相关实体之间的不同基数。
  • 关系是使用键建立的,其中一个表中的外键引用另一个表的主键。
  • 例如,在“Departments”和“Employees”之间的一对多关系中,每个部门可以有多个员工(一对多)。而每个员工只属于一个部门。

SQL

SQL(结构化查询语言)是一种功能强大的领域特定语言,用于在关系数据库管理系统(RDBMS)中处理和操作数据。它作为与关系型数据库交互并执行各种操作(包括查询、插入、更新和删除数据)的标准语言。

  • 数据查询: SQL 允许用户使用 `SELECT` 语句从一个或多个表中检索特定数据。可以根据不同的标准定制查询以过滤、排序和组合数据。
  • 数据操作: SQL 提供了在数据库表中添加、更新和删除数据的指令。`INSERT`、`UPDATE` 和 `DELETE` 语句用于执行这些操作。
  • 数据定义: SQL 允许用户定义和修改数据库对象的结构,包括表、视图、索引和约束。这些功能使用 `CREATE`、`ALTER` 和 `DROP` 语句执行。
  • 数据控制: SQL 包含用于管理数据库安全性和访问权限的命令。用户可以使用 `GRANT` 和 `REVOKE` 语句向特定数据库对象授予或撤销权限。
  • 事务控制: SQL 支持事务控制以确保数据的一致性和完整性。事务是作为单个单元完全完成或根本不完成的 SQL 语句组。`COMMIT`、`ROLLBACK` 和 `SAVEPOINT` 等命令用于控制事务行为。

SQL 命令

在 Python 中,您可以使用各种库与关系型数据库交互并执行 SQL 命令。一个流行的库是 SQLite3,它提供了一个简单的接口来处理 SQLite 数据库。

数据操作命令

SELECT

`SELECT` 命令用于根据特定标准从一个或多个表中检索数据。

INSERT

`INSERT` 命令用于向表中添加新数据。

UPDATE

`UPDATE` 命令用于修改表中的现有数据。

DELETE

`DELETE` 命令用于从表中删除数据。

示例

输出

(102, 'Atlas', 'Corrigan', 'Marketing')
(103, 'Lily', 'Bloom', 'Technician')

数据定义命令

CREATE

`CREATE` 命令用于创建新的数据库对象,例如表、视图或索引。

ALTER

`ALTER` 命令用于修改现有表的结构,例如添加或删除列。

DROP

`DROP` 命令用于删除现有数据库对象。

示例

输出

CREATING TABLE...
The Table has been created successfully

INSERTING DATA INTO 'Employees' TABLE...
The Data has been inserted successfully
(101, 'John', 'Doe', 'Sales')
(102, 'Jane', 'Smith', 'Marketing')
(103, 'Michael', 'Johnson', 'Finance')

ALTERING THE 'Employees' TABLE...
A new Column 'age' has been included successfully
(101, 'John', 'Doe', 'Sales', None)
(102, 'Jane', 'Smith', 'Marketing', None)
(103, 'Michael', 'Johnson', 'Finance', None)

DROPPING THE 'Employees' TABLE...
The Table has been dropped successfully
An error occurred while selecting data: no such table: Employees