前言

对于已经习惯了 Java 语言中的 SpringBoot+MyBatisPlus+Maven 方式的我而言,在使用 python 开发相关工作辅助工具的时候,自然会想到使用一些类似的框架来实现。原因在于编程思想方法是一致的,变化的只不过是具体实现的语言的不同而已。

因此,基于上述想法,对于 python 开发框架我选择了 FastAPI+SqlAlchemy+PyMySQL+Poetry+Typer 这个组合。

WEB框架

FastAPI https://fastapi.tiangolo.com/zh/,截止2024年7月14日,GitHub上的星达到 7.4万还要多。 而我选择 FastAPI 的更重要的一点,其使用方式与 SpringBoot 相对比较接近,因此上手也变得更加容易。FastAPI非常适合开发api应用,当然了,结合 Jinja 这个模板,你也可以构建传统的WEB网站。而 Jinja2这个模板,有对应的Java的解析器,因此对于我来说,Jinja https://jinja.palletsprojects.com/en/3.1.x/ 贯穿于 PythonJava 项目,其通用性非常好,能够有效的节省时间,避免资源浪费。

ORM框架

python 开发过程中,不可避免的需要涉及到数据库的操作,因为我们以 MySQL 为主,因此除了跨数据库的兼容性,更看重在MySQL数据库上的实用性。 在没有使用ORM框架之前,数据库的操作使用的 PyMySQL https://pymysql.readthedocs.io/en/latest/index.html 使用起来非常的简单。 而我把 SqlAlchemyhttps://www.sqlalchemy.org/ 这个老牌的ORM框架当做是 Java 中的 Hibernate,更加适合后台框架开发。我直接选择 2.0 及以上的版本。

CLI框架

对于时常开发一些命令行工具而言,我喜欢使用 Typer https://typer.tiangolo.com/,这也是 FastAPI 团队的杰作,相当于 FastCLI。参考 User Guide 非常容易上手。

打包框架

对于 python而言包管理工具非常多,然而在众多的打包工具中 Poetry 是如此的简洁明了,并且在Google内部大量使用。https://python-poetry.org/ 详细的文档及说明是我最喜欢的,通常这意味着该团队对项目极其负责,而不仅仅局限于程序代码。

poetry build -f wheelmvn package 一样简洁命令,然后你就可以将打包后的whl文件发给你的同事,只要 pip install your_app.whl 后就可以正常跑了,超级方便。

日志框架

python 实际上内置日志框架的,只不过其过于简单。loguru https://loguru.readthedocs.io/en/stable/ 是简单性可以和内置框架比肩的日志框架,但是简单的API却有着更为强大的实用功能。