Python的秘密基地--[章节14] Python 数据库操作

第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.connector

conn = 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 pymongo

client = 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 数据库优化技巧

  1. 使用索引:提高查询速度。
  2. 优化 SQL 语句:避免 SELECT *,只查询需要的字段。
  3. 数据缓存:使用 Redis 缓存高频访问的数据。
  4. 分库分表:对于超大规模数据,拆分数据库提高性能。

14.7 小结

本章介绍了:

  • SQLite、MySQL 和 MongoDB 的基本操作。
  • SQLAlchemy ORM,简化数据库访问。
  • 数据库优化技巧,提高查询性能。

下一章,我们将探讨 Python 的多线程与并发编程!🚀💡

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

码上有潜

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值