小伙伴们!今天我们来聊聊 Python 中的一个强大库——SQLModel。这货不是普通的 ORM(对象关系映射)库,它是基于 Pydantic 的,这意味着你可以用 Python 类来定义你的数据库模型,并且这些类会自动映射到数据库表。听起来是不是很酷?那就让我们开始吧!
SQLModel 是什么?
SQLModel 是一个现代的 ORM 库,它让你可以用 Python 类来定义数据库模型,并且自动生成 SQL 代码。它结合了 Pydantic 的类型检查和 SQLAlchemy 的数据库操作能力,让你的代码既简洁又安全。
为什么选择 SQLModel?
安装 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 仓库哦!