学习AI大模型的第一个月,python后端制作
AI+学习python、mysql、fastAPI制作后端API
最近在杭州学习ai大模型,学习了一个月,学会了如何用python制作fastAPI,前端按老师讲的用cursor写的,用的vue框架;今天做个学习笔记。
1、写后端fastAPI
整理思路,创建项目products,有db,app,model三个文件夹。
首先写model,使用pydantic库的BaseModel,分别写每个table的Request类和Response类,按照对应数据库的字段写每个属性的类型。
db写基础数据库的连接信息,如下:
import pymysql
def getConnection():
conn=pymysql.connect(
host='localhost',
port=3306,
user='root',
password='123456',
db='db_test',
charset='utf8',
autocommit=True,
cursorclass=pymysql.cursors.DictCursor)
return conn
他的意思是使用的自己系统安装的mysql,端口为3306,用户名,密码,用哪个数据库,编码格式,写sql语句自动提交,返回字段强制转换为dict字典格式。
它介绍了我的后端数据库信息,使用的是windows10系统安装的mysql(问了第二阶段的新老师,找到的windows安装包)。
然后写app,这个是路由的意思:
from fastapi import FastAPI
from fastapi.middleware.cors import CORSMiddleware
from app import productsRouter, categoriesRouter, usersRouter, ordersRouter, orderItemsRouter
app=FastAPI(
title="商品",
description="商品API",
version="0.1.0"
)
app.add_middleware(
CORSMiddleware,
allow_origins=["http://localhost:5173", "http://127.0.0.1:5173"],
allow_credentials=True,
allow_methods=["*"],
allow_headers=["*"],
)
app.include_router(productsRouter.router,prefix="/api/products",tags=["商品"])
app.include_router(categoriesRouter.router,prefix="/api/categories",tags=["商品分类"])
app.include_router(usersRouter.router,prefix="/api/users",tags=["用户"])
app.include_router(ordersRouter.router,prefix="/api/orders",tags=["订单"])
app.include_router(orderItemsRouter.router,prefix="/api/order_items",tags=["订单明细"])
@app.get("/")
def read_root():
return {"message": "Hello World"}
if __name__ == "__main__":
import uvicorn
uvicorn.run('main:app', host="127.0.0.1", port=8000, reload=True)
这段的意思就是后端的开启文件,中间app.include_router语句是链接要写的数据表的操作路由,每个代表一个表的增删改查操作。
我例举一个:
from fastapi import APIRouter,Depends
from db.database import getConnection
from model.categories import CategoriesRequest, CategoriesResponse
router=APIRouter()
# 添加商品分类
@router.post('/add_categories')
def add_categories(categories:CategoriesRequest,conn=Depends(getConnection)):
with conn.cursor() as cursor:
sql="""
insert into categories(
category_id,
category_name,
parent_category_id,
description
)values(%s,%s,%s,%s)
"""
params = categories.to_tuple()
cursor.execute(sql, params)
cursor.execute('select * from categories where category_id=%s', (categories.category_id,))
result = cursor.fetchone()
conn.close()
return result
# 获取单个商品分类
@router.get('/get_categories')
def get_categories(category_id:str,conn=Depends(getConnection)):
with conn.cursor() as cursor:
sql="select * from categories where category_id=%s"
cursor.execute(sql, (category_id,))
result = cursor.fetchone()
conn.close()
return result
# 根据商品分类id删除对应商品分类,返回删除成功
@router.delete('/delete_categories')
def delete_categories(category_id:str,conn=Depends(getConnection)):
with conn.cursor() as cursor:
sql="delete from categories where category_id=%s"
cursor.execute(sql, (category_id,))
conn.close()
return {"message": "删除成功"}
# 输入商品分类名称,页码,每页大小,显示商品分类信息
@router.get('/get_categories_by_name')
def get_categories_by_name(category_name:str,page:int=1,page_size:int=10,conn=Depends(getConnection)):
offset = (page - 1) * page_size
with conn.cursor() as cursor:
sql="""
select * from categories
where category_name like %s
limit %s,%s
"""
cursor.execute(sql,("%"+category_name+"%",offset,page_size))
result = cursor.fetchall()
conn.close()
return {"categories": result} # Changed from return result to return {"categories": result}
# 修改商品分类信息,返回修改了的商品分类信息,parent_category_id 字段可以为空
@router.put('/update_categories')
def update_categories(categories:CategoriesRequest,conn=Depends(getConnection)):
with conn.cursor() as cursor:
sql="""
update categories set
category_name=%s,
parent_category_id=%s,
description=%s
where category_id=%s
"""
params = (
categories.category_name,
categories.parent_category_id,
categories.description,
categories.category_id)
cursor.execute(sql, params)
cursor.execute('select * from categories where category_id=%s', (categories.category_id,))
result = cursor.fetchone()
conn.close()
return result
不知道写的好不好,用pycharm写的,我自己是可以读懂,当然也用了安装的CN插件(现在大概都要用,快!)。
然后就是测试
这是fastAPI自带的测试界面。
我自己写了两个表的分路由信息(都是繁琐的重复操作,第一次也容易出错)。
然后打开cusor写前端,这里不得不提一嘴,现在的代码工具真强大!

当然他这里要先安装一个工具node.js,我也不知道是做什么的,有懂行的可以教教我,反正老师说得安装一个,不然没法运行vue框架。
安装这里教的前后端步骤打开:
然后让他把剩下的后端分路由API写了,在接上前端:
如图,最后的结果就出来了,自己写一个小系统,成就感满满!!
感谢,能看到这里,接下来我们会学习第二阶段的大模型知识!!
有时间的话我会继续分享。
更多推荐



所有评论(0)