Skip to content

数据 CRUD


简介

CRUD 是一个常用的数据库操作术语,表示创建(Create)、读取(Read)、更新(Update)和删除(Delete)数据的操作。在 SQLAlchemy 中,可以使用它提供的 API 来执行这些 CRUD 操作。


为什么要进行 CRUD 操作

CRUD 操作是数据库和应用程序开发中的基础,用于管理和维护数据,支持用户互动,并确保数据的一致性和可用性。这些操作为应用程序提供了灵活性和数据访问能力。


操作方法

下面是使用 SQLAlchemy 进行 CRUD 操作的示例,基于对象与数据模型中定义的 User 用户表。


数据的新增操作

单条数据的添加

  1. 首先实例化操作的数据库表的类,在实例化时指定数据。
  2. 将实例添加到 session 中。
  3. 涉及到数据的更改操作需要把 session 提交 (commit)。
  4. 建议操作完数据后关闭 session。

# 新增表数据,需要导入 User 类,进行实例化
user1 = User(id=1, username="张三", email="123@123.com")
# 将数据提交到session
db_session.add(user1)
# 将数据提交到commit
db_session.commit()

# 关闭连接
db_session.close()

批量数据添加

  1. 首先多次实例化操作的数据库表的类,在实例化时指定数据。
  2. 第一种逐次将实例添加到 session 中通过 db_session.add(userx) 操作。
  3. 第二种把实例放到一个列表中通过 db_session.add_all([user2,user3]) 进行操作。
  4. 涉及到数据的更改操作需要把 session 提交 (commit)。
  5. 建议操作完数据后关闭 session。

# 第一种批量添加
# 批量添加数据操作
user2 = User(id=2, username="张四", email="124@123.com", gender="男")
user3 = User(id=3, username="张五", email="125@123.com", gender="男")

# 将数据提交到session
db_session.add(user2)
db_session.add(user3)

# 第二种批量添加
db_session.add_all([user2, user3])
# 将数据提交到commit
db_session.commit()

# 关闭连接
db_session.close()

数据的查询操作

接下来进行数据的查找操作:

  • 查询数据的格式为: db_session.query(类).filter_by(条件).单条或多条
  • 查询单条数据:db_session.query(类).filter_by(条件).first()
  • 查询多条数据:db_session.query(类).filter_by(条件).all()
  • 查询的时候如果表结构类中没有指定 __repr__(self) 则查询出来是一个对象,编写了 __repr__(self) 可以自定义实例输出信息。
  • 如果需要查询具体的属性的值,则通过实例点属性的方式得到需要的值。

# 查询所有数据
datas = db_session.query(User).all()

# 单条件查询多条数据
datas = db_session.query(User).filter_by(name="tom").all()

# 多条件查询多条数据
datas = db_session.query(User).\
    filter_by(name="tom").filter_by(id=2).all()
name = datas[0].name

数据的修改操作

修改方式一

  1. 首先查询出来需要的数据。
  2. 对查询出来的数据对象进行属性的修改。
  3. 提交 session。

# 数据的修改

# 第一种方式
# 使用对象修改
obj = db_session.query(User).filter_by(id=1).first()
print(obj.name)
obj.name = "Lily"
obj = db_session.query(User).filter_by(id=1).first()
# 操作完成后,要提交操作
db_session.commit()

# 关闭连接
db_session.close()

修改方式二

  1. 给定查询条件进行查询后,直接进行 update 操作
  2. 提交 session

# 第二种方式
# 修改的键值对使用 字段形式包裹
db_session.query(User).filter_by(id=1).update({'name':"Harry"})
datas = db_session.query(User).filter_by(id=1).first()
# 操作完成后,要提交操作
db_session.commit()

# 关闭连接
db_session.close()

数据的删除操作

删除方式一

  1. 首先查询出来需要的数据
  2. 对查询出来的数据对象进行删除操作
  3. 提交 session

# 数据的查询
user = db_session.query(User).filter_by(id=1).first()
# 删除该数据
db_session.delete(user)
# 将数据提交到commit
db_session.commit()
# 关闭连接
db_session.close()

删除方式二

  1. 给定查询条件进行查询后,直接进行 delete 操作
  2. 提交 session

# 数据的删除
db_session.query(User).filter_by(id=1).delete()
# 将数据提交到commit
db_session.commit()
# 关闭连接
db_session.close()

通过上述操作,就把数据库的原生的 SQL 增删改查通过 SQLAlchemy 实现了,写法比直接写 SQL 要简练。


总结

在本章节中,介绍了 SQLAlchemy 如何对数据进行 CRUD 操作。

  1. 什么是 CRUD
  2. 为什么要进行 CRUD 操作
  3. 数据的新增操作
  4. 数据的查询操作
  5. 数据的修改操作
  6. 数据的删除操作