SQLAlchemy,一个强大的 Python ORM 库!

文摘   2024-11-09 18:37   广东  


大家好,我是橙子!今天,我们来聊聊 SQLAlchemy,一个让我们轻松连接数据库的 Python 库。SQLAlchemy 是一个 ORM(对象关系映射) 框架,可以把数据库中的表和数据变成 Python 对象,帮助我们以更“Pythonic”的方式操作数据库。在 SQLAlchemy 的帮助下,我们可以更少地写 SQL,直接在代码里处理数据,既方便又简洁。今天橙子会从 SQLAlchemy 的基本概念、创建数据库模型到常见的增删改查操作,一步步带大家入门 SQLAlchemy。


一、安装 SQLAlchemy

首先,我们需要安装 SQLAlchemy 库。只需一行命令:


!pip install sqlalchemy

安装成功后,我们就可以使用 SQLAlchemy 来连接数据库啦!


二、ORM 和 SQLAlchemy

在开始之前,我们先来了解一下 ORM 的基本概念。ORM(对象关系映射)是把数据库中的表和数据,映射到 Python 中的 对象。这样,我们可以通过操作类和对象来管理数据,而不用直接写 SQL 语句。

SQLAlchemy 就是 Python 中一个非常流行的 ORM 库。通过 SQLAlchemy,我们可以定义数据模型,处理数据关系,并直接在 Python 代码里操作数据库。这种方法不仅提高了代码的可读性,也让开发变得更加简单。


三、连接数据库

使用 SQLAlchemy 的第一步是 创建数据库连接。我们可以连接到本地的 SQLite 数据库、MySQL、PostgreSQL 等多种数据库。这里橙子先用 SQLite 举例,因为它不需要额外配置,非常适合入门。


from sqlalchemy import create_engine



# 创建数据库连接

engine = create_engine('sqlite:///example.db')

example.db 就是我们要连接的数据库文件。如果这个文件不存在,SQLAlchemy 会自动创建它。


四、定义数据模型

在 SQLAlchemy 中,我们使用 来定义数据库中的 。每个类代表一张表,每个类的属性代表表中的一个字段。我们可以使用 Column 类来定义字段,并指定它的数据类型,比如 String(字符串)、Integer(整数)等。


from sqlalchemy import Column, Integer, String

from sqlalchemy.ext.declarative import declarative_base



# 创建基础类

Base = declarative_base()



# 定义 User 表

class User(Base):

    __tablename__ = 'users'

    

    id = Column(Integer, primary_key=True)

    name = Column(String)

    age = Column(Integer)

这里,我们定义了一个 User 表,包含三个字段:idnameage。其中,id 是主键。


五、创建表

定义完数据模型后,我们需要 创建表 来存储数据。可以通过 Base.metadata.create_all 方法来完成:


# 创建所有表

Base.metadata.create_all(engine)

这个方法会根据我们定义的模型,自动创建数据库中的表。


六、增删改查操作

接下来,我们学习在 SQLAlchemy 中如何执行 增删改查 操作。SQLAlchemy 提供了 Session 对象来管理数据库的所有操作。

1. 创建 Session


from sqlalchemy.orm import sessionmaker



# 创建 Session

Session = sessionmaker(bind=engine)

session = Session()

session 就是我们操作数据库的“工具箱”。有了它,我们就可以执行增删改查操作了。

2. 插入数据


# 创建新用户

new_user = User(name="Alice", age=25)



# 添加到 session

session.add(new_user)

# 提交到数据库

session.commit()

我们创建了一个新的 User 对象 new_user,然后将它添加到 session 中并提交,这样数据就会被保存到数据库中。

3. 查询数据

查询数据可以使用 session.query,比如我们想查询所有用户:


# 查询所有用户

users = session.query(User).all()

for user in users:

    print(user.name, user.age)

这里,我们使用 all() 方法来获取所有用户,User.nameUser.age 是字段,直接在对象上使用就可以获取数据。

4. 更新数据

如果我们想更新某个用户的数据,只需修改对象的属性,然后提交:


# 查找用户

user = session.query(User).filter_by(name="Alice").first()

# 修改年龄

user.age = 26

# 提交修改

session.commit()

我们先查询出 Alice,然后修改她的 age 字段并提交。

5. 删除数据

要删除数据,可以使用 delete() 方法:


# 查找用户

user_to_delete = session.query(User).filter_by(name="Alice").first()

# 删除用户

session.delete(user_to_delete)

# 提交

session.commit()

这个操作会从数据库中删除 Alice 的记录。


七、小贴士

  • 注意: 每次修改或删除后都要记得 commit(),不然修改不会保存到数据库。

  • 小心空对象: 在查询时,filter_by 会返回第一个符合条件的对象,如果没找到符合的对象会返回 None,使用 first() 后要记得检查。


八、总结与练习

SQLAlchemy 的基本操作就是这些啦!我们学习了如何连接数据库、定义数据模型,以及如何进行增删改查操作。虽然 SQLAlchemy 功能很强大,但入门的过程并不复杂。希望大家可以通过本文了解 SQLAlchemy 的基础,动手试试这些操作,熟悉 Python 和数据库之间的交互。

练习题:

  1. 尝试创建一个新的数据模型,比如 “Books”,包含 title(书名)和 author(作者)字段。

  2. 用 SQLAlchemy 插入几本书,然后查询出来,打印书名和作者。


今天的 Python 学习之旅就到这里啦!记得动手敲代码。祝大家学习愉快,Python 学习节节高!


梦起时分
关注我了解更多信息
 最新文章