自学内容网 自学内容网

CRUD 操作解析科普(SQL、ORM、FastAPI三种方式)

大家在日常的编程学习与开发交流中,常常会听到 CRUD 这个术语,可它究竟是什么呢?
或许你知道它和数据操作有关,却又不能详细地说明。今天,就带大家深入学习,探究CRUD 操作到底代表什么?

简而言之:CRUD 代表 CreateReadUpdateDelete

CRUD 是计算机科学中用于描述数据库或类似存储系统中基本操作的缩写。

  • Create(创建)用于添加新数据
  • Read(读取)用于获取数据
  • Update(更新)用于修改现有数据
  • Delete(删除)用于移除数据。
    这四个操作构成了数据管理的基础。

为什么 CRUD 操作必不可少?

在任何涉及数据处理的应用程序中,CRUD 操作都是核心。

  • Create 操作允许系统接收新信息
  • Read 操作让用户和系统能够访问和查看数据
  • Update 操作确保数据的准确性和时效性
  • Delete 操作则帮助清理不再需要的数据,优化存储和系统性能。没有这些操作,数据管理将变得混乱无序,应用程序也无法正常运行。

什么是 SQL 中的 CRUD 操作?

在 SQL(结构化查询语言)中,CRUD 操作通过特定的语句来实现。

  • Create 通常使用 INSERT 语句向数据库表中插入新记录;
  • Read 使用 SELECT 语句从表中检索数据;
  • Update 使用 UPDATE 语句修改现有记录的字段值;
  • Delete 使用 DELETE 语句从表中删除记录。
    例如,使用 INSERT INTO 语句添加新用户,使用 SELECT * FROM 语句查询用户信息。

在原始 SQL 中编写 CRUD 操作

以 MySQL 为例,创建操作可以这样写:

INSERT INTO users (name, email) VALUES ('John Doe', 'ruzhila@example.com');

读取操作:

SELECT * FROM users WHERE id = 1;

更新操作:

UPDATE users SET email = 'ruzhila@example.com' WHERE id = 1;

删除操作:

DELETE FROM users WHERE id = 1;

使用 SQLAlchemy 执行 CRUD 操作

SQLAlchemy 是 Python 的数据库抽象层库。通过它,开发者可以使用 Python 代码进行数据库操作,而无需直接编写 SQL 语句。例如

创建操作:

from sqlalchemy import create_engine, Column, Integer, String
from sqlalchemy.orm import sessionmaker, declarative_base

Base = declarative_base()

class User(Base):
    __tablename__ = 'users'
    id = Column(Integer, primary_key=True)
    name = Column(String)
    email = Column(String)

engine = create_engine('sqlite:///example.db')
Base.metadata.create_all(engine)
Session = sessionmaker(bind=engine)
session = Session()

new_user = User(name='Jane Smith', email='jruzhila@example.com')
session.add(new_user)
session.commit()

读取、更新和删除操作也有相应的 Python 方法实现。
`

HTTP 请求方法中的 CRUD 操作有哪些?

在 HTTP 协议中,CRUD 操作通常与特定的请求方法相关联。

  • Create 对应 POST 方法,用于向服务器提交新数据;
  • Read 对应 GET 方法,用于从服务器获取数据;
  • Update 对应 PUTPATCH 方法,
  • Put 通常用于完全替换资源,
  • Patch 用于部分更新;
  • Delete 对应 DELETE 方法,用于删除服务器上的资源。

使用 REST API 执行 CRUD 操作

REST(表述性状态转移)API 是一种常用的 Web API 设计风格,它利用 HTTP 方法实现 CRUD 操作。

  • 通过向/users端点发送 POST 请求并附带用户数据来创建新用户,
  • 使用 GET 请求/users/1获取 ID 1 的用户信息,
  • 通过 PUT 请求/users/1并附带更新数据来更新用户信息,
  • 使用 DELETE 请求/users/1删除用户。

使用 FastAPI 执行 CRUD 操作

FastAPI 是一个基于 Python 的现代 Web 框架,用于快速构建 API。它可以很方便地实现 CRUD 操作。
通过定义不同的路由和处理函数,结合 SQLAlchemy 等数据库操作库,实现对数据库的创建、读取、更新和删除操作。
例如,使用 FastAPI 定义一个创建用户的路由:

from fastapi import FastAPI, HTTPException
from pydantic import BaseModel
from typing import List, Optional

app = FastAPI()

# 定义用户模型
class User(BaseModel):
    id: int
    name: str
    email: str
    age: Optional[int] = None

# 模拟数据库
fake_db = []

# 创建用户
@app.post("/users/", response_model=User)
def create_user(user: User):
    for db_user in fake_db:
        if db_user.id == user.id:
            raise HTTPException(status_code=400, detail="User ID already exists")
    fake_db.append(user)
    return user

# 获取所有用户
@app.get("/users/", response_model=List[User])
def get_users():
    return fake_db

# 获取单个用户
@app.get("/users/{user_id}", response_model=User)
def get_user(user_id: int):
    for user in fake_db:
        if user.id == user_id:
            return user
    raise HTTPException(status_code=404, detail="User not found")

# 更新用户
@app.put("/users/{user_id}", response_model=User)
def update_user(user_id: int, updated_user: User):
    for index, user in enumerate(fake_db):
        if user.id == user_id:
            fake_db[index] = updated_user
            return updated_user
    raise HTTPException(status_code=404, detail="User not found")

# 删除用户
@app.delete("/users/{user_id}", response_model=User)
def delete_user(user_id: int):
    for index, user in enumerate(fake_db):
        if user.id == user_id:
            deleted_user = fake_db.pop(index)
            return deleted_user
    raise HTTPException(status_code=404, detail="User not found")

if __name__ == "__main__":
    import uvicorn
    uvicorn.run(app, host="0.0.0.0", port=8000)

加入入职啦,老师带你学习详细的后端编程知识。
官网地址: 入职啦 ruzhila

结论

CRUD 操作贯穿于数据处理的各个环节,无论是在数据库层面,还是在 Web 开发的 API 层面。
从原始 SQL 到各种高级框架和库,掌握 CRUD 操作的实现方式对于开发高效、可靠的数据驱动应用程序至关重要。
不同的技术和工具为实现 CRUD 操作提供了多样化的途径,开发者可以根据项目需求选择最合适的方案。


原文地址:https://blog.csdn.net/ruzhila/article/details/145276264

免责声明:本站文章内容转载自网络资源,如侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!