Python Sqlalchemy学习——新增/修改/删除

文章目录


前言

接着上一篇博客https://blog.csdn.net/weixin_44706420/article/details/162371783?spm=1011.2124.3001.6209,本文主要包含新增/修改/删除操作

具体代码

python 复制代码
class AddBookRequest:
    Title=None
    Author=None
    Price=None

# 新增书籍
async def addBook(request:AddBookRequest):
    async with AsyncSessionLocal() as session:
        # 根据Title判断下书籍是否已经存在
        result=await session.execute(select(exists().where(Book.Title == request.Title)))
        if result.scalar():
            return "书籍已存在"

        book=Book(**request.__dict__)
        book.Id=str(uuid.uuid4())
        session.add(book)
        await session.commit()
    return "OK"



class UpdateBookRequest:
    Id=None
    Title=None
    Author=None
    Price=None

# 更新书籍信息
async def updateBook(request:UpdateBookRequest):
    async with AsyncSessionLocal() as session:
        book=await session.get(Book,request.Id)

        if book is None:
            return "书籍信息不存在"


        # book.Title=request.Title
        # book.Author=request.Author
        book.Price=request.Price

        await session.commit()
        return "OK"


# 根据ID删除书籍
async def deleteBook(id):
    async with AsyncSessionLocal() as session:
        book=await session.get(Book,id)
        if book is None:
            return "书籍信息不存在"
        await session.delete(book)
        await session.commit()
        return "OK"

# 批量更新书籍信息
async def batchUpdateBooks(ids):
    async with AsyncSessionLocal() as session:
        result=await session.execute(select(Book).where(Book.Id.in_(ids)))
        books=result.scalars().all()
        if len(books)==0 or len(books)!=len(ids):
            return "部分书籍不存在"

        for book in books:
            book.Price+=1

        await session.commit()
        return "OK"