第14章:Python 数据库操作
数据库是存储和管理数据的核心组件。在 Python 中,我们可以使用多个数据库,如 SQLite、MySQL、PostgreSQL 和 MongoDB。本章将介绍如何使用 Python 连接数据库、执行 SQL 查询,并操作 NoSQL 数据库。
14.1 数据库基础知识
14.1.1 数据库类型
数据库主要分为两类:
- 关系型数据库(SQL):基于表格结构,使用 SQL 语言操作,如 MySQL、PostgreSQL、SQLite。
- 非关系型数据库(NoSQL):以文档、键值对或图数据库存储数据,如 MongoDB、Redis。
14.1.2 SQL 语句基础
常见的 SQL 语句:
CREATE TABLE users (id INTEGER PRIMARY KEY,name TEXT NOT NULL,age INTEGER
);INSERT INTO users (name, age) VALUES ('Alice', 25);
SELECT * FROM users;
UPDATE users SET age = 26 WHERE name = 'Alice';
DELETE FROM users WHERE name = 'Alice';
14.2 SQLite 操作
SQLite 是 Python 内置的轻量级数据库,无需安装额外软件。
14.2.1 连接 SQLite 数据库
import sqlite3# 连接数据库(如果不存在则创建)
conn = sqlite3.connect("test.db")
cursor = conn.cursor()# 创建表
cursor.execute('''CREATE TABLE IF NOT EXISTS users (id INTEGER PRIMARY KEY, name TEXT, age INTEGER)''')# 插入数据
cursor.execute("INSERT INTO users (name, age) VALUES (?, ?)", ("Alice", 25))# 查询数据
cursor.execute("SELECT * FROM users")
rows = cursor.fetchall()
for row in rows:print(row)# 提交更改并关闭连接
conn.commit()
conn.close()
14.3 MySQL 操作
MySQL 是流行的关系型数据库,适用于 Web 应用和大规模数据存储。
14.3.1 安装 MySQL 连接库
pip install mysql-connector-python
14.3.2 连接 MySQL
import mysql.connectorconn = mysql.connector.connect(host="localhost",user="root",password="password",database="test_db"
)cursor = conn.cursor()# 创建表
cursor.execute("CREATE TABLE IF NOT EXISTS users (id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(255), age INT)")# 插入数据
cursor.execute("INSERT INTO users (name, age) VALUES (%s, %s)", ("Bob", 30))# 查询数据
cursor.execute("SELECT * FROM users")
rows = cursor.fetchall()
for row in rows:print(row)conn.commit()
conn.close()
14.4 MongoDB 操作
MongoDB 是 NoSQL 数据库,使用 JSON 格式存储数据,适用于大数据处理。
14.4.1 安装 pymongo
pip install pymongo
14.4.2 连接 MongoDB 并插入数据
import pymongoclient = pymongo.MongoClient("mongodb://localhost:27017/")
db = client["test_db"]
collection = db["users"]# 插入数据
collection.insert_one({"name": "Charlie", "age": 28})# 查询数据
for user in collection.find():print(user)
14.5 ORM(对象关系映射)
使用 SQLAlchemy 可以简化数据库操作,不需要手写 SQL 语句。
14.5.1 安装 SQLAlchemy
pip install sqlalchemy
14.5.2 定义 ORM 模型
from sqlalchemy import create_engine, Column, Integer, String
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import sessionmaker# 连接数据库
engine = create_engine("sqlite:///test.db")
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="David", age=35)
session.add(new_user)
session.commit()# 查询数据
users = session.query(User).all()
for user in users:print(user.name, user.age)
14.6 数据库优化技巧
- 使用索引:提高查询速度。
- 优化 SQL 语句:避免
SELECT *
,只查询需要的字段。 - 数据缓存:使用 Redis 缓存高频访问的数据。
- 分库分表:对于超大规模数据,拆分数据库提高性能。
14.7 小结
本章介绍了:
- SQLite、MySQL 和 MongoDB 的基本操作。
- SQLAlchemy ORM,简化数据库访问。
- 数据库优化技巧,提高查询性能。