大家好,我是橙子!今天,我们来聊聊 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 表,包含三个字段:id
、name
和 age
。其中,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.name
和 User.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 和数据库之间的交互。
练习题:
尝试创建一个新的数据模型,比如 “Books”,包含
title
(书名)和author
(作者)字段。用 SQLAlchemy 插入几本书,然后查询出来,打印书名和作者。
今天的 Python 学习之旅就到这里啦!记得动手敲代码。祝大家学习愉快,Python 学习节节高!