7. Python 文件与数据处理
数据库连接与操作
在现代软件开发中,数据库是存储和管理数据的核心工具。Python 提供了多种方式与数据库进行交互,无论是关系型数据库(如 MySQL、PostgreSQL)还是非关系型数据库(如 MongoDB、Redis),Python 都有相应的库支持。本节将介绍如何使用 Python 连接和操作数据库。
1. 数据库连接的基本步骤
在 Python 中,连接数据库通常需要以下几个步骤:
安装数据库驱动:不同的数据库需要不同的驱动。例如,MySQL 使用
mysql-connector-python或PyMySQL,PostgreSQL 使用psycopg2,SQLite 则内置在 Python 标准库中。导入数据库模块:根据所使用的数据库,导入相应的模块。
建立连接:使用数据库模块提供的连接函数,传入数据库的地址、端口、用户名、密码等信息,建立与数据库的连接。
创建游标:游标(Cursor)是用于执行 SQL 语句并获取结果的对象。
执行 SQL 语句:通过游标执行 SQL 查询或操作。
提交事务:对于写操作(如 INSERT、UPDATE、DELETE),需要提交事务以保存更改。
关闭连接:操作完成后,关闭游标和数据库连接。
2. 连接 MySQL 数据库示例
以下是一个连接 MySQL 数据库并执行查询的示例:
import mysql.connector
# 建立连接
conn = mysql.connector.connect(
host="localhost",
user="root",
password="password",
database="testdb"
)
# 创建游标
cursor = conn.cursor()
# 执行 SQL 查询
cursor.execute("SELECT * FROM users")
# 获取查询结果
results = cursor.fetchall()
for row in results:
print(row)
# 关闭游标和连接
cursor.close()
conn.close()
3. 连接 PostgreSQL 数据库示例
连接 PostgreSQL 数据库的步骤与 MySQL 类似,只是使用的模块不同:
import psycopg2
# 建立连接
conn = psycopg2.connect(
host="localhost",
dbname="testdb",
user="postgres",
password="password"
)
# 创建游标
cursor = conn.cursor()
# 执行 SQL 查询
cursor.execute("SELECT * FROM users")
# 获取查询结果
results = cursor.fetchall()
for row in results:
print(row)
# 关闭游标和连接
cursor.close()
conn.close()
4. 使用 ORM 框架
除了直接使用 SQL 语句操作数据库,Python 还提供了多种 ORM(对象关系映射)框架,如 SQLAlchemy 和 Django ORM。ORM 框架允许开发者通过操作 Python 对象来间接操作数据库,从而避免直接编写 SQL 语句。
以下是一个使用 SQLAlchemy 的示例:
from sqlalchemy import create_engine, Column, Integer, String
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import sessionmaker
# 创建数据库引擎
engine = create_engine('sqlite:///example.db', echo=True)
# 定义基类
Base = declarative_base()
# 定义模型类
class User(Base):
__tablename__ = 'users'
id = Column(Integer, primary_key=True)
name = Column(String)
age = Column(Integer)
# 创建表
Base.metadata.create_all(engine)
# 创建会话
Session = sessionmaker(bind=engine)
session = Session()
# 添加数据
new_user = User(name="Alice", age=25)
session.add(new_user)
session.commit()
# 查询数据
users = session.query(User).all()
for user in users:
print(user.name, user.age)
# 关闭会话
session.close()
5. 数据库操作的注意事项
事务管理:对于写操作,确保在操作完成后提交事务。如果发生错误,可以回滚事务以避免数据不一致。
SQL 注入:避免直接拼接 SQL 语句,使用参数化查询来防止 SQL 注入攻击。
连接池:在高并发场景下,使用连接池来管理数据库连接,以提高性能。
异常处理:在数据库操作中,可能会遇到各种异常(如连接失败、SQL 语法错误等),需要妥善处理这些异常。
6. 总结
Python 提供了丰富的工具和库来连接和操作数据库。无论是直接使用 SQL 语句还是通过 ORM 框架,开发者都可以轻松地与数据库进行交互。掌握这些技能对于开发数据驱动的应用程序至关重要。
在下一节中,我们将探讨数据序列化与反序列化的相关内容。
