当前位置: 首页 > article >正文

Python 数据库操作教程

Python 数据库操作教程

引言

在现代应用程序中,数据库是存储和管理数据的核心组件。Python 提供了多种方式与数据库进行交互,包括使用内置的 sqlite3 模块、SQLAlchemy ORM、以及其他第三方库如 PyMySQLpsycopg2。本教程将深入探讨如何使用 Python 进行数据库操作,涵盖从基础到高级的内容,并通过示例帮助您更好地理解。

1. 环境准备

在开始之前,确保您的计算机上安装了 Python。您可以通过以下命令检查 Python 是否已安装:

python --version

接下来,安装所需的库。我们将使用 sqlite3SQLAlchemy 作为示例。

pip install sqlalchemy

2. 使用 SQLite3 进行基本数据库操作

2.1 创建数据库和表

SQLite 是一个轻量级的数据库,非常适合小型应用和开发测试。以下代码展示了如何创建一个数据库和表。

import sqlite3

# 连接到数据库(如果数据库不存在,会自动创建)
conn = sqlite3.connect('example.db')

# 创建一个游标对象
cursor = conn.cursor()

# 创建一个用户表
cursor.execute('''
CREATE TABLE IF NOT EXISTS users (
    id INTEGER PRIMARY KEY AUTOINCREMENT,
    name TEXT NOT NULL,
    age INTEGER NOT NULL
)
''')

# 提交事务并关闭连接
conn.commit()
conn.close()

2.2 插入数据

接下来,我们将插入一些数据到 users 表中。

def insert_user(name, age):
    conn = sqlite3.connect('example.db')
    cursor = conn.cursor()
    cursor.execute('INSERT INTO users (name, age) VALUES (?, ?)', (name, age))
    conn.commit()
    conn.close()

# 插入示例用户
insert_user('Alice', 30)
insert_user('Bob', 25)

2.3 查询数据

我们可以使用 SQL 查询语句从数据库中获取数据。

def fetch_users():
    conn = sqlite3.connect('example.db')
    cursor = conn.cursor()
    cursor.execute('SELECT * FROM users')
    users = cursor.fetchall()
    conn.close()
    return users

# 打印所有用户
for user in fetch_users():
    print(user)

2.4 更新和删除数据

更新和删除数据同样简单。以下是更新和删除用户的示例。

def update_user(user_id, name, age):
    conn = sqlite3.connect('example.db')
    cursor = conn.cursor()
    cursor.execute('UPDATE users SET name = ?, age = ? WHERE id = ?', (name, age, user_id))
    conn.commit()
    conn.close()

def delete_user(user_id):
    conn = sqlite3.connect('example.db')
    cursor = conn.cursor()
    cursor.execute('DELETE FROM users WHERE id = ?', (user_id,))
    conn.commit()
    conn.close()

# 更新用户数据
update_user(1, 'Alice Smith', 31)

# 删除用户
delete_user(2)

3. 使用 SQLAlchemy 进行高级数据库操作

SQLAlchemy 是一个强大的 ORM(对象关系映射)库,允许我们使用 Python 对象与数据库交互,而无需直接编写 SQL 语句。

3.1 设置 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()

3.2 使用 SQLAlchemy 插入数据

现在我们可以使用 ORM 的方式插入数据。

def insert_user_sqlalchemy(name, age):
    new_user = User(name=name, age=age)
    session.add(new_user)
    session.commit()

# 插入示例用户
insert_user_sqlalchemy('Charlie', 28)

3.3 查询数据

使用 SQLAlchemy 查询数据也非常简单。

def fetch_users_sqlalchemy():
    return session.query(User).all()

# 打印所有用户
for user in fetch_users_sqlalchemy():
    print(f'ID: {user.id}, Name: {user.name}, Age: {user.age}')

3.4 更新和删除数据

同样地,我们可以使用 SQLAlchemy 更新和删除用户。

def update_user_sqlalchemy(user_id, name, age):
    user = session.query(User).filter(User.id == user_id).first()
    if user:
        user.name = name
        user.age = age
        session.commit()

def delete_user_sqlalchemy(user_id):
    user = session.query(User).filter(User.id == user_id).first()
    if user:
        session.delete(user)
        session.commit()

# 更新用户数据
update_user_sqlalchemy(1, 'Charlie Brown', 29)

# 删除用户
delete_user_sqlalchemy(1)

4. 总结

在本教程中,我们介绍了如何使用 Python 与 SQLite 进行基本的数据库操作,并通过 SQLAlchemy ORM 进行更高级的交互。无论是简单的脚本还是复杂的应用程序,掌握数据库操作都是必不可少的技能。

5. 进一步学习

  • SQLAlchemy 文档:了解更多高级功能,如关系、查询构建等。
  • 数据库设计:学习如何设计高效的数据库结构。
  • 其他数据库:探索如何使用其他数据库,如 MySQL、PostgreSQL 等。

希望本教程对您有所帮助,祝您在 Python 数据库操作的学习中取得成功!


如果您有任何疑问或需要进一步的帮助,请随时在评论区留言!


http://www.kler.cn/a/392741.html

相关文章:

  • MybatisPlus入门(十)MybatisPlus-逻辑删除和多记录操作
  • 车载空气净化器语音芯片方案
  • STM32单片机WIFI语音识别智能衣柜除湿消毒照明
  • 时序数据库TimescaleDB安装部署以及常见使用
  • ReactPress技术揭秘
  • TDesign了解及使用
  • python购物计算 2024年6月青少年电子学会等级考试 中小学生python编程等级考试一级真题答案解析
  • 51c自动驾驶~合集21
  • python,dataclasses模块介绍及示例
  • 基于MATLAB的图像处理字母识别
  • MySQL初学之旅(2)增删改查—上
  • java 读取log日志文件关键信息
  • BeanUtils.copyProperties,拷贝后,修改target对象的字段,如果保证source对象字段不会变化
  • 2024年9月 GESP CCF C++六级编程能力等级考试认证真题
  • Jailbreaking ChatGPT via Prompt Engineering: An Empirical Study
  • 手术机器人:精准医疗的新选择
  • blind-watermark - 水印绑定
  • 大数据新视界 -- 大数据大厂之 Impala 在大数据架构中的性能优化全景洞察(上)(13/30)
  • CSS Modules中的 :global
  • 矩阵的各种计算:乘法、逆矩阵、转置、行列式等——基于Excel实现
  • 遇到Word打不开,WPS可以打开的解决办法
  • ES6字符串的新增方法
  • 微服务架构面试内容整理-API 网关-Gateway
  • (68)希尔伯特变换、解析信号,与瞬时幅度、频率和相位的提取的MATLAB仿真
  • 《C陷阱与缺陷》
  • 缓存淘汰策略及其使用场景详解