Python 学习日记 - 2025-05-15

24 阅读2分钟

Python 学习日记 - 2025-05-15

background:fe但未来一年算是有机会接触点后端的东西(以下内容由ai帮忙整理,行文风格比较机器人)

今天是我正式学习 Python 的第一天,虽然过程中踩了不少坑,但也确实学到了很多真实的东西。以下是我今天的学习记录:


🐍 克隆 sqladmin 项目

我在 GitHub 上找一个项目 sqladmin,这是一个基于 FastAPI 和 SQLAlchemy 的后台管理框架。我觉得这个项目结构清晰、现代化,适合拿来学习 Python Web 开发的实际架构。

执行了以下命令来克隆项目:

git clone https://github.com/aminalaee/sqladmin.git
cd sqladmin

⚙️ 尝试安装依赖并运行

进入项目后发现目录结构与ai预期给我讲解的不太一样,主要包括:

  • docs/
  • sqladmin/
  • tests/

没有常见的 main.pyrun.py,我意识到这可能是一个“库”的结构,而不是“应用项目”。

尝试用以下命令安装开发依赖:

pip install -e .[dev]

但是 zsh 提示

ERROR: File "setup.py" or "setup.cfg" not found...

我意识到这个项目基于 pyproject.toml,它需要使用 hatch 之类的新工具。


🧪 初识 Hatch,进坑又出坑

安装并尝试使用 hatch

hatch shell

成功进入 hatch 环境,但想运行项目时使用:

uvicorn run:app --reload

却提示:

zsh: command not found: uvicorn

我意识到还没有安装 uvicorn。于是执行:

pip install uvicorn

安装后即可正常使用。


✨ 写了一个最小 FastAPI + SQLAdmin 示例

由于原项目没有现成入口文件,我自己写了一个 main.py,学习了如何通过 sqladmin 管理模型数据。运行后可以打开浏览器访问 /admin,查看自动生成的管理页面。

代码如下(简略版):

from fastapi import FastAPI
from sqladmin import Admin, ModelView
from sqlalchemy import Column, Integer, String, create_engine
from sqlalchemy.orm import sessionmaker, declarative_base

app = FastAPI()
engine = create_engine("sqlite:///example.db")
Base = declarative_base()

class User(Base):
    __tablename__ = "users"
    id = Column(Integer, primary_key=True)
    name = Column(String)

Base.metadata.create_all(bind=engine)

class UserAdmin(ModelView, model=User):
    column_list = [User.id, User.name]

admin = Admin(app, engine)
admin.add_view(UserAdmin)

运行:

uvicorn main:app --reload

浏览器访问:http://localhost:8000/admin


📚 总结

虽然今天在安装依赖、搞环境、理解项目结构上走了不少弯路,但正是这些“踩坑”的过程,让我对 Python 后端项目的真实运行机制有了第一手的体会。

  • 学到了 pyproject.toml 代替 setup.py 的现代构建方式
  • 初识了 hatch 环境管理工具
  • 成功运行了 FastAPI + sqladmin 的 demo

明天我打算继续深入了解 FastAPI 的路由机制,以及 SQLAlchemy 的建模方式。(ai安排的,实际上边工作边见缝插针看到哪算哪,莽夫学习法,先跑起来再学语法)


💪 路还长,但第一步已经踏出!