<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>Python on cboy&#39;s space</title>
    <link>https://cboy.space/tags/python/</link>
    <description>Recent content in Python on cboy&#39;s space</description>
    <generator>Hugo -- gohugo.io</generator>
    <lastBuildDate>Mon, 17 Mar 2025 15:24:58 +0800</lastBuildDate><atom:link href="https://cboy.space/tags/python/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Learning Python - Web Project</title>
      <link>https://cboy.space/posts/programming/learning-python-web-project/</link>
      <pubDate>Mon, 17 Mar 2025 15:24:58 +0800</pubDate>
      
      <guid>https://cboy.space/posts/programming/learning-python-web-project/</guid>
      <description>开始着手 在学习Python的时候，首先是基础语法我快速过了一般30days的python练习，但是在学习的过程中没有感受到很强的困难，可能是因为思考的深度原因没有太多问题出现在脑海中。
在以为学习完基础的知识后，想新建一个项目来写写的时候，第一个问题来了，我的项目结构应该是什么样的？另外项目是怎么被管理的？其中的依赖管理，编译，打包生成制品是怎么进行的？
确定目标 因为自己有Java后端的背景，所以会想通过Java生态来找Python生态中的类似的实现来快速熟悉Python。根据这个想法，就开始行动起来。首先是搭建一个HTTP服务器并且使用上ORM和关系型数据库（MySQL或者PostgreSQL）。
框架选型 在Java生态中常见的是Spring框架作为依赖注入和实例管理容器为基底，很多类都只需要通过注解让框架自动生成单例，另外再通过注解的方式注入到依赖该单例的实例中。而Python生态下以我目前精力分配来说我没有去考虑使用类似的框架来实现，我也不太清楚Python生态下是否流行依赖注入的框架，因此我先放弃掉依赖注入框架。
基于上诉的构想，接下来我需要找Python生态下的支持HTTP协议的Web框架，通过搜索结合Github中Star数，在Python生态下找到了主流三个框架1. Django 2. Flask 3. FastAPI 结合我目前的状态，只需要纯后端支持就行了，主要是写HTTP API接口，所以就选择FastAPI。不过我对其还没有进行深入的研究，例如是如何做协议序列化，是否支持参数校验，是否支持拦截器等等 一些在业务实现中常常会使用到的功能点。在没有明确目标的情况下，就无脑的暂定用FastAPI了，其他的等后续的功能迭代需要再进行研究。
在选完Web框架后，就需要考虑数据库和对应的ORM框架。因为最近想做大模型相关的功能会依赖到向量数据库，而PostgreSQL即包含了MySQL能支持的也有对应的扩展插件来支持向量存储功能，于是就选用了PostgreSQL作为数据库。另外的ORM框架的话则是用了SQLAlchemy。
到此为止的话，基本的选型已经是完成了。当然还有一个重要的部分就是单测框架，其能确保自己写的每个部分能快速得到验证是否符合预期，而不是把整个项目跑起来在来判断，减短了验证的周期。暂时是pytest单测框架当然自己还完全不熟悉。</description>
    </item>
    
  </channel>
</rss>
