Dự án thực hành FastAPI, SQLAlchemy, Alembic và ánh xạ dữ liệu xuống MySQL.
- Python
- FastAPI
- SQLAlchemy
- Alembic
- MySQL 8.4
- Docker Compose
Máy cần cài đặt:
- Python
- Docker Desktop
python -m venv venv
venv\Scripts\activatepython -m pip install "fastapi[standard]" sqlalchemy alembic pymysql python-multipartdocker compose up -d --waitalembic upgrade headuvicorn app.main:app --reloadSau khi ứng dụng chạy:
- API: http://127.0.0.1:8000
- Swagger UI: http://127.0.0.1:8000/docs
- ReDoc: http://127.0.0.1:8000/redoc
| Thuộc tính | Giá trị |
|---|---|
| Host | localhost |
| Port | 33067 |
| Database | fastapi_books |
| User | fastapi_user |
| Password | fastapi_password |
MySQL sử dụng cổng 33067 trên máy để hạn chế trùng với các dự án khác. Bên trong container, MySQL vẫn chạy ở cổng mặc định 3306.
Thư mục migrations/ đã tồn tại trong repository, vì vậy sau khi clone không chạy lại:
alembic init migrationsKhi thay đổi các SQLAlchemy model, tạo một migration mới:
alembic revision --autogenerate -m "mo ta thay doi"Sau đó áp dụng migration xuống MySQL:
alembic upgrade headXem migration hiện tại:
alembic currentXem lịch sử migration:
alembic historyDừng container nhưng giữ lại dữ liệu:
docker compose downKhởi động lại:
docker compose up -d --waitXóa container và toàn bộ dữ liệu MySQL:
docker compose down -vLệnh
docker compose down -vxóa volume chứa dữ liệu và không thể khôi phục từ Docker.