学习AI大模型的第一个月,python后端制作 AI学习python、mysql、fastAPI制作后端API最近在杭州学习ai大模型学习了一个月学会了如何用python制作fastAPI前端按老师讲的用cursor写的用的vue框架今天做个学习笔记。1、写后端fastAPI整理思路创建项目products有dbappmodel三个文件夹。首先写model使用pydantic库的BaseModel分别写每个table的Request类和Response类按照对应数据库的字段写每个属性的类型。db写基础数据库的连接信息如下importpymysqldefgetConnection():connpymysql.connect(hostlocalhost,port3306,userroot,password123456,dbdb_test,charsetutf8,autocommitTrue,cursorclasspymysql.cursors.DictCursor)returnconn他的意思是使用的自己系统安装的mysql端口为3306用户名密码用哪个数据库编码格式写sql语句自动提交返回字段强制转换为dict字典格式。它介绍了我的后端数据库信息使用的是windows10系统安装的mysql问了第二阶段的新老师找到的windows安装包)。然后写app这个是路由的意思fromfastapiimportFastAPIfromfastapi.middleware.corsimportCORSMiddlewarefromappimportproductsRouter,categoriesRouter,usersRouter,ordersRouter,orderItemsRouter appFastAPI(title商品,description商品API,version0.1.0)app.add_middleware(CORSMiddleware,allow_origins[http://localhost:5173,http://127.0.0.1:5173],allow_credentialsTrue,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(/)defread_root():return{message:Hello World}if__name____main__:importuvicorn uvicorn.run(main:app,host127.0.0.1,port8000,reloadTrue)这段的意思就是后端的开启文件中间app.include_router语句是链接要写的数据表的操作路由每个代表一个表的增删改查操作。我例举一个fromfastapiimportAPIRouter,Dependsfromdb.databaseimportgetConnectionfrommodel.categoriesimportCategoriesRequest,CategoriesResponse routerAPIRouter()# 添加商品分类router.post(/add_categories)defadd_categories(categories:CategoriesRequest,connDepends(getConnection)):withconn.cursor()ascursor:sql insert into categories( category_id, category_name, parent_category_id, description )values(%s,%s,%s,%s) paramscategories.to_tuple()cursor.execute(sql,params)cursor.execute(select * from categories where category_id%s,(categories.category_id,))resultcursor.fetchone()conn.close()returnresult# 获取单个商品分类router.get(/get_categories)defget_categories(category_id:str,connDepends(getConnection)):withconn.cursor()ascursor:sqlselect * from categories where category_id%scursor.execute(sql,(category_id,))resultcursor.fetchone()conn.close()returnresult# 根据商品分类id删除对应商品分类返回删除成功router.delete(/delete_categories)defdelete_categories(category_id:str,connDepends(getConnection)):withconn.cursor()ascursor:sqldelete from categories where category_id%scursor.execute(sql,(category_id,))conn.close()return{message:删除成功}# 输入商品分类名称页码每页大小显示商品分类信息router.get(/get_categories_by_name)defget_categories_by_name(category_name:str,page:int1,page_size:int10,connDepends(getConnection)):offset(page-1)*page_sizewithconn.cursor()ascursor:sql select * from categories where category_name like %s limit %s,%s cursor.execute(sql,(%category_name%,offset,page_size))resultcursor.fetchall()conn.close()return{categories:result}# Changed from return result to return {categories: result}# 修改商品分类信息返回修改了的商品分类信息,parent_category_id 字段可以为空router.put(/update_categories)defupdate_categories(categories:CategoriesRequest,connDepends(getConnection)):withconn.cursor()ascursor: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,))resultcursor.fetchone()conn.close()returnresult不知道写的好不好用pycharm写的我自己是可以读懂当然也用了安装的CN插件现在大概都要用快。然后就是测试这是fastAPI自带的测试界面。我自己写了两个表的分路由信息都是繁琐的重复操作第一次也容易出错。然后打开cusor写前端这里不得不提一嘴现在的代码工具真强大当然他这里要先安装一个工具node.js我也不知道是做什么的有懂行的可以教教我反正老师说得安装一个不然没法运行vue框架。安装这里教的前后端步骤打开然后让他把剩下的后端分路由API写了在接上前端如图最后的结果就出来了自己写一个小系统成就感满满感谢能看到这里接下来我们会学习第二阶段的大模型知识有时间的话我会继续分享。