0

0

如何在FastAPI中使用ORM库进行数据操作

王林

王林

发布时间:2023-07-30 17:00:41

|

3695人浏览过

|

来源于php中文网

原创

如何在fastapi中使用orm库进行数据操作

引言:
FastAPI是一个基于Python的现代化Web框架,它的设计灵感来源于Starlette和Pydantic,是一个高性能的框架,特别适合用于构建快速、可伸缩和高性能的RESTful API服务。在FastAPI中,借助ORM(对象关系映射)库,我们可以更方便地进行数据库操作。本文将引导您如何在fastapi中使用orm库进行数据操作,并提供一些代码示例。

一、ORM库简介
ORM(对象关系映射)是一种将数据库中的数据映射为对象的技术。ORM库能够让开发者通过定义对象模型来操作数据库,而不用直接编写SQL语句。在FastAPI中,常用的ORM库有SQLAlchemy、Peewee等。本文以SQLAlchemy为例进行说明。

二、安装和配置SQLAlchemy
在使用SQLAlchemy前,我们首先需要安装SQLAlchemy库。可以通过以下命令进行安装:

pip install sqlalchemy

安装完成后,我们需要设置数据库的连接配置。在FastAPI中,可以在main.py文件中添加如下代码:

from sqlalchemy import create_engine
from sqlalchemy.orm import declarative_base, sessionmaker

SQLALCHEMY_DATABASE_URL = "sqlite:///./test.db"
engine = create_engine(SQLALCHEMY_DATABASE_URL)
SessionLocal = sessionmaker(autocommit=False, autoflush=False, bind=engine)

Base = declarative_base()

上述代码中,我们创建了一个SQLite数据库,并定义了SessionLocal用于创建数据库会话。SQLALCHEMY_DATABASE_URL是数据库的连接的URL。

三、定义数据模型
在使用ORM进行数据操作之前,我们需要定义数据模型。可以在models.py文件中定义数据模型。以一个示例用户模型为例,示例如下:

from sqlalchemy import Column, Integer, String
from database import Base

class User(Base):
    __tablename__ = "users"

    id = Column(Integer, primary_key=True, index=True)
    name = Column(String(50), unique=True, index=True)
    email = Column(String(50), unique=True, index=True)
    password = Column(String(100))

上述代码中,我们定义了一个名为User的数据模型,并指定了数据表名为"users"。在数据模型中,我们可以定义各个字段的类型等。

四、创建数据表
在使用ORM进行数据操作之前,我们需要创建相应的数据库表。可以在main.py文件中添加如下代码:

Base.metadata.create_all(bind=engine)

上述代码将在数据库中创建所有定义的数据模型对应的表。

五、数据操作示例
以用户模型为例,我们将给出一些常见的数据操作示例。

  1. 查询所有用户

    手机在线人工冲值
    手机在线人工冲值

    说明:我不知道这个系统还能用到什么地方!他的运作方式是这样的,客户在其他地方比如掏宝购买了 你得卡,然后在你的网站进行冲值,你得有人登陆并看着后台,如果有人冲值,就会刷出记录,手工冲值完毕后,你得点击 [冲值完毕],客户的页面 就会返回 冲值信息!安装:上传所有文件,倒入(sql.txt)mysql数据库,使用myphpadminphplib 777phplib/sys.php 777phplib

    下载
    from sqlalchemy.orm import Session
    from . import models
    
    def get_users(db: Session):
     return db.query(models.User).all()

    在上述代码中,我们通过查询所有用户数据并返回。

  2. 查询单个用户

    from sqlalchemy.orm import Session
    from . import models
    
    def get_user_by_id(db: Session, user_id: int):
     return db.query(models.User).filter(models.User.id == user_id).first()

    在上述代码中,我们通过用户id查询单个用户数据并返回。

  3. 创建用户

    from sqlalchemy.orm import Session
    from . import models, schemas
    
    def create_user(db: Session, user: schemas.UserCreate):
     hashed_password = hashlib.sha256(user.password.encode()).hexdigest()
     db_user = models.User(name=user.name, email=user.email, password=hashed_password)
     db.add(db_user)
     db.commit()
     db.refresh(db_user)
     return db_user

    在上述代码中,我们通过将传入的用户数据保存到数据库并返回。

  4. 更新用户

    from sqlalchemy.orm import Session
    from . import models, schemas
    
    def update_user(db: Session, user_id: int, user: schemas.UserUpdate):
     db_user = db.query(models.User).filter(models.User.id == user_id).first()
     if user.name:
         db_user.name = user.name
     if user.email:
         db_user.email = user.email
     if user.password:
         db_user.password = hashlib.sha256(user.password.encode()).hexdigest()
     db.commit()
     db.refresh(db_user)
     return db_user

    在上述代码中,我们通过用户id将传入的更新数据保存至数据库。

  5. 删除用户

    from sqlalchemy.orm import Session
    from . import models
    
    def delete_user(db: Session, user_id: int):
     db_user = db.query(models.User).filter(models.User.id == user_id).first()
     db.delete(db_user)
     db.commit()
     return {'message': f"User {user_id} deleted successfully"}

    在上述代码中,我们通过用户id从数据库中删除用户数据。

结语:
通过上述的代码示例,我们可以看出,在FastAPI中使用ORM库进行数据操作是相对简单的。借助ORM库,我们不需要直接编写SQL语句,而是可以通过对象模型进行数据库操作,使得代码更加简洁、可读性更好。希望本文对您在FastAPI项目中使用ORM库进行数据操作有所帮助。

相关专题

更多
php源码安装教程大全
php源码安装教程大全

本专题整合了php源码安装教程,阅读专题下面的文章了解更多详细内容。

7

2025.12.31

php网站源码教程大全
php网站源码教程大全

本专题整合了php网站源码相关教程,阅读专题下面的文章了解更多详细内容。

4

2025.12.31

视频文件格式
视频文件格式

本专题整合了视频文件格式相关内容,阅读专题下面的文章了解更多详细内容。

7

2025.12.31

不受国内限制的浏览器大全
不受国内限制的浏览器大全

想找真正自由、无限制的上网体验?本合集精选2025年最开放、隐私强、访问无阻的浏览器App,涵盖Tor、Brave、Via、X浏览器、Mullvad等高自由度工具。支持自定义搜索引擎、广告拦截、隐身模式及全球网站无障碍访问,部分更具备防追踪、去谷歌化、双内核切换等高级功能。无论日常浏览、隐私保护还是突破地域限制,总有一款适合你!

7

2025.12.31

出现404解决方法大全
出现404解决方法大全

本专题整合了404错误解决方法大全,阅读专题下面的文章了解更多详细内容。

42

2025.12.31

html5怎么播放视频
html5怎么播放视频

想让网页流畅播放视频?本合集详解HTML5视频播放核心方法!涵盖<video>标签基础用法、多格式兼容(MP4/WebM/OGV)、自定义播放控件、响应式适配及常见浏览器兼容问题解决方案。无需插件,纯前端实现高清视频嵌入,助你快速打造现代化网页视频体验。

4

2025.12.31

关闭win10系统自动更新教程大全
关闭win10系统自动更新教程大全

本专题整合了关闭win10系统自动更新教程大全,阅读专题下面的文章了解更多详细内容。

3

2025.12.31

阻止电脑自动安装软件教程
阻止电脑自动安装软件教程

本专题整合了阻止电脑自动安装软件教程,阅读专题下面的文章了解更多详细教程。

3

2025.12.31

html5怎么使用
html5怎么使用

想快速上手HTML5开发?本合集为你整理最实用的HTML5使用指南!涵盖HTML5基础语法、主流框架(如Bootstrap、Vue、React)集成方法,以及无需安装、直接在线编辑运行的平台推荐(如CodePen、JSFiddle)。无论你是新手还是进阶开发者,都能轻松掌握HTML5网页制作、响应式布局与交互功能开发,零配置开启高效前端编程之旅!

2

2025.12.31

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
ThinkPHP6.x API接口--十天技能课堂
ThinkPHP6.x API接口--十天技能课堂

共14课时 | 1.1万人学习

极客学院ASP.NET视频教程
极客学院ASP.NET视频教程

共90课时 | 20.3万人学习

ThinkPHP开发大型商城项目实战视频
ThinkPHP开发大型商城项目实战视频

共54课时 | 21.1万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号