Python基础入门 Day58:使用 SQLModel 实现增删改查(CRUD)操作

121次阅读
没有评论

共计 1401 个字符,预计需要花费 4 分钟才能阅读完成。

在前一节中我们学习了 SQLModel 的基本用法与数据库连接方式,今天我们将继续深入,演示如何通过 SQLModel 实现典型的增删改查(CRUD)操作。

一、准备工作:定义模型和数据库引擎

from sqlmodel import SQLModel, Field, create_engine

class User(SQLModel, table=True):
    id: int = Field(default=None, primary_key=True)
    name: str
    age: int

sqlite_url = "sqlite:///./test.db"
engine = create_engine(sqlite_url, echo=False)
SQLModel.metadata.create_all(engine)

二、创建(Create)

from sqlmodel import Session

def create_user(name: str, age: int):
    user = User(name=name, age=age)
    with Session(engine) as session:
        session.add(user)
        session.commit()
        session.refresh(user)
        return user

三、读取(Read)

def get_user_by_id(user_id: int):
    with Session(engine) as session:
        user = session.get(User, user_id)
        return user

def get_all_users():
    with Session(engine) as session:
        return session.query(User).all()

四、更新(Update)

def update_user(user_id: int, name: str = None, age: int = None):
    with Session(engine) as session:
        user = session.get(User, user_id)
        if not user:
            return None
        if name:
            user.name = name
        if age:
            user.age = age
        session.add(user)
        session.commit()
        session.refresh(user)
        return user

五、删除(Delete)

def delete_user(user_id: int):
    with Session(engine) as session:
        user = session.get(User, user_id)
        if not user:
            return False
        session.delete(user)
        session.commit()
        return True

六、示例调用

# 创建用户
new_user = create_user("Tom", 30)
print(new_user)

# 获取所有用户
print(get_all_users())

# 更新用户信息
update_user(new_user.id, age=31)

# 删除用户
delete_user(new_user.id)

七、小结
使用 SQLModel 实现 CRUD 操作非常直观,得益于其对 SQLAlchemy 和 Pydantic 的封装,减少了大量样板代码。下节我们将介绍 SQLModel 中如何使用关系(Relationship)来处理一对多或多对多的数据结构。

正文完
 0
评论(没有评论)