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.py 或 run.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安排的,实际上边工作边见缝插针看到哪算哪,莽夫学习法,先跑起来再学语法)
💪 路还长,但第一步已经踏出!