SQLModel: 解放人类生产力的Python库

2024年 5月 23日 60.7k 0

小伙伴们!今天我们来聊聊 Python 中的一个强大库——SQLModel。这货不是普通的 ORM(对象关系映射)库,它是基于 Pydantic 的,这意味着你可以用 Python 类来定义你的数据库模型,并且这些类会自动映射到数据库表。听起来是不是很酷?那就让我们开始吧!

SQLModel: 解放人类生产力的Python库-1

SQLModel 是什么?

SQLModel 是一个现代的 ORM 库,它让你可以用 Python 类来定义数据库模型,并且自动生成 SQL 代码。它结合了 Pydantic 的类型检查和 SQLAlchemy 的数据库操作能力,让你的代码既简洁又安全。

为什么选择 SQLModel?

  • 类型安全:利用 Python 类型注解,减少运行时错误。
  • 简洁性:用 Python 类定义模型,自动生成 SQL 语句。
  • 灵活性:支持多种数据库,易于集成和扩展。
  • 安装 SQLModel

    要开始使用 SQLModel,首先需要安装它。打开你的终端,运行以下命令:

    pip install sqlmodel

    定义模型

    定义一个模型就像定义一个 Python 类一样简单。我们来定义一个 User 模型,包含 id, username 和 email 字段。

    from sqlmodel import SQLModel, Field, String, Integer
    
    class User(SQLModel, table=True):
       id: int = Field(default=None, primary_key=True)
       username: String = Field(...)
       email: String = Field(...)

    这里,Field 函数用于定义字段的额外属性,比如是否为主键。

    创建数据库引擎

    接下来,我们需要创建一个数据库引擎。SQLModel 支持多种数据库,这里我们以 SQLite 为例。

    from sqlalchemy import create_engine
    
    engine = create_engine("sqlite:///./test.db")
    SQLModel.metadata.create_all(engine)

    增删查改操作

    插入数据

    我们来插入一个新用户。

    from sqlmodel import Session
    
    def create_user(username: str, email: str):
       session = Session(engine)
       new_user = User(username=username, email=email)
       session.add(new_user)
       session.commit()
       session.refresh(new_user)
       return new_user

    查询数据

    查询操作也很直观。

    def get_users():
       session = Session(engine)
       users = session.query(User).all()
       return users
    
    def get_user_by_id(user_id: int):
       session = Session(engine)
       user = session.query(User).filter(User.id == user_id).first()
       return user

    更新数据

    更新操作同样简单。

    def update_user_email(user_id: int, new_email: str):
       session = Session(engine)
       user = session.query(User).filter(User.id == user_id).first()
       if user:
           user.email = new_email
           session.commit()
           return user
       return None

    删除数据

    删除操作也是必不可少的。

    def delete_user(user_id: int):
       session = Session(engine)
       user = session.query(User).filter(User.id == user_id).first()
       if user:
           session.delete(user)
           session.commit()
           return True
       return False

    以上就是 SQLModel 的基本介绍和一些增删查改操作的示例。希望这能帮助你更好地理解和使用 SQLModel。如果你想要更深入地了解 SQLModel,记得查看它的官方文档和 GitHub 仓库哦!

    相关文章

    Oracle如何使用授予和撤销权限的语法和示例
    Awesome Project: 探索 MatrixOrigin 云原生分布式数据库
    下载丨66页PDF,云和恩墨技术通讯(2024年7月刊)
    社区版oceanbase安装
    Oracle 导出CSV工具-sqluldr2
    ETL数据集成丨快速将MySQL数据迁移至Doris数据库

    发布评论