Python代码数据库操作:与数据库交互的最佳实践
发布时间: 2024-06-18 02:11:15 阅读量: 78 订阅数: 34
Python与MySQL数据库的交互:连接、操作与实践指南
![python如何运行代码](https://img-blog.csdnimg.cn/873a9eba58f84e4ebe611e360b381ae5.png)
# 1. Python代码数据库操作简介**
Python是一种广泛用于数据库操作的编程语言。它提供了多种模块和工具,使开发人员能够轻松地与关系数据库和非关系数据库进行交互。本章将介绍Python代码数据库操作的基础知识,包括:
* Python中用于数据库操作的模块和工具
* 建立数据库连接和执行SQL查询
* 处理数据库连接和查询异常
* 插入、更新和删除数据库数据
# 2. 数据库连接与操作**
**2.1 连接到数据库**
连接到数据库是与数据库交互的第一步。Python提供了多种方法来连接到数据库,包括:
* **使用连接池**
连接池是一种管理数据库连接的机制,它通过预先创建和维护一组连接来提高性能。当需要连接时,它会从池中获取一个可用连接,而不是每次都创建一个新连接。这可以显着减少连接开销,尤其是在高并发场景中。
```python
import psycopg2
# 创建连接池
connection_pool = psycopg2.pool.SimpleConnectionPool(1, 10, host="localhost", database="mydb")
# 获取连接
connection = connection_pool.getconn()
```
* **处理连接异常**
在连接到数据库时,可能会遇到各种异常。常见异常包括:
| 异常 | 描述 |
|---|---|
| `psycopg2.OperationalError` | 数据库连接失败 |
| `psycopg2.ProgrammingError` | SQL 语句语法错误 |
| `psycopg2.IntegrityError` | 数据完整性约束违反 |
```python
try:
# 连接到数据库
connection = psycopg2.connect(host="localhost", database="mydb")
except psycopg2.OperationalError as e:
print("数据库连接失败:", e)
except psycopg2.ProgrammingError as e:
print("SQL 语句语法错误:", e)
except psycopg2.IntegrityError as e:
print("数据完整性约束违反:", e)
```
**2.2 执行SQL查询**
连接到数据库后,就可以执行SQL查询来检索数据。Python提供了多种方法来执行查询,包括:
* **使用参数化查询**
参数化查询是一种使用占位符来表示动态值的查询。这可以防止SQL注入攻击,并提高查询性能。
```python
# 创建游标
cursor = connection.cursor()
# 使用参数化查询
query = "SELECT * FROM users WHERE name = %s"
cursor.execute(query, ("John",))
# 检索查询结果
results = cursor.fetchall()
```
* **处理查询结果**
执行查询后,可以使用游标的`fetchall()`方法检索查询结果。结果是一个元组列表,其中每个元组表示查询返回的一行。
```python
# 检索查询结果
results = cursor.fetchall()
# 遍历查询结果
for row in results:
print(row)
```
**2.3 修改数据库数据**
除了检索数据外,还可以使用Python修改数据库数据。常见操作包括:
* **插入、更新和删除操作**
```python
# 创建游标
cursor = connection.cursor()
# 插入数据
query = "INSERT INTO users (name, email) VALUES (%s, %s)"
cursor.execute(query, ("John", "john@example.com"))
# 更新数据
query = "UPDATE users SET email = %s WHERE name = %s"
cursor.execute(query, ("john@example.com", "John"))
# 删除数据
query = "DELETE FROM users WHERE name = %s"
cursor.execute(query, ("John",))
# 提交更改
connection.commit()
```
* **事务管理**
事务是一组原子操作,要么全部成功,要么全部失败。Python使用`commit()`和`rollback()`方法来管理事务。
```python
# 创建游标
cursor = connection.cursor()
# 开始事务
cursor.execute("BEGIN")
# 执行操作
cursor.execute("INSERT INTO users (name, email) VALUES (%s, %s)", ("John", "john@example.com"))
cursor.execute("UPDATE users SET email = %s WHERE na
```
0
0