Este proyecto implementa un sistema CRUD (Crear, Leer, Actualizar, Eliminar) utilizando FastAPI, SQLAlchemy y MySQL para gestionar usuarios, materiales y préstamos.
Este proyecto permite gestionar:
- Usuarios: Crear, leer, actualizar y eliminar usuarios.
- Materiales: Registrar y gestionar materiales disponibles.
- Préstamos: Asignar materiales a usuarios y gestionar su estado.
Utiliza las siguientes tecnologías:
- FastAPI: Framework moderno para construir APIs RESTful.
- SQLAlchemy: ORM para interactuar con la base de datos MySQL.
- Pydantic: Validación de datos y serialización.
- MySQL: Base de datos relacional para almacenar información.
- API RESTful con documentación interactiva (
/docsy/redoc). - Validación automática de datos mediante Pydantic.
- Soporte para múltiples entidades: usuarios, materiales y préstamos.
- Manejo de estados y relaciones entre tablas.
- Autenticación segura (opcional, no implementada en esta versión).
Antes de ejecutar el proyecto, asegúrate de tener instalado lo siguiente:
- Python 3.8+
- MySQL Server
- Dependencias del proyecto (ver
requirements.txt) - Cryptography (necesario para autenticación MySQL):
pip install cryptography
Sigue estos pasos para configurar el proyecto en tu entorno local:
-
Clona este repositorio:
git clone https://github.com/AlejandroRomero17/CRUD-PRESTAMOS-FASTAPI cd CRUD-PY-MYSQL -
Crea un entorno virtual:
python -m venv env source env/bin/activate # En Windows: env\Scripts\activate
-
Instala las dependencias:
pip install -r requirements.txt
-
Configura la conexión a la base de datos: Edita el archivo
config/db.pyy actualiza la URL de conexión:SQLALCHEMY_DATABASE_URL = "mysql+pymysql://root:tu_contraseña@localhost:3306/base_prueba"
-
Ejecuta las migraciones (si usas Alembic):
alembic upgrade head
-
Inicia la aplicación:
uvicorn main:app --reload
La API estará disponible en http://127.0.0.1:8000.
- Swagger UI: Accede a
/docspara explorar y probar los endpoints. - ReDoc: Accede a
/redocpara una vista más limpia de la documentación.
{
"nombre": "Juan",
"primer_apellido": "Pérez",
"segundo_apellido": "García",
"tipo_usuario": "Alumno",
"nombre_usuario": "juanperez123",
"correo_electronico": "juan.perez@example.com",
"contrasena": "contraseña_segura_123",
"numero_telefono": "555-1234",
"estatus": "Activo"
}Envía este JSON a la ruta POST /users para crear un nuevo usuario.
GET /users: Lista todos los usuarios.POST /users: Crea un nuevo usuario.GET /users/{id}: Obtiene un usuario por ID.PUT /users/{id}: Actualiza un usuario existente.DELETE /users/{id}: Elimina un usuario.
GET /materials: Lista todos los materiales.POST /materials: Crea un nuevo material.GET /materials/{id}: Obtiene un material por ID.PUT /materials/{id}: Actualiza un material existente.DELETE /materials/{id}: Elimina un material.
GET /loans: Lista todos los préstamos.POST /loans: Crea un nuevo préstamo.GET /loans/{id}: Obtiene un préstamo por ID.PUT /loans/{id}: Actualiza un préstamo existente.DELETE /loans/{id}: Elimina un préstamo.
Si deseas contribuir al proyecto, sigue estos pasos:
- Haz un fork del repositorio.
- Crea una nueva rama (
git checkout -b feature/nueva-funcionalidad). - Realiza tus cambios y haz commit (
git commit -m "Añadir nueva funcionalidad"). - Sube tus cambios (
git push origin feature/nueva-funcionalidad). - Abre un pull request.
Toda ayuda es bienvenida, ya sea para corregir errores, mejorar la documentación o agregar nuevas características.
Este proyecto está bajo la licencia MIT. Consulta el archivo LICENSE para más detalles.
Si tienes preguntas o sugerencias, no dudes en contactarme:
- Nombre: Alejandro Gonzalez Romero
- Correo electrónico: gonzalez.romero.alejandroo@gmail.com
- GitHub: (https://github.com/AlejandroRomero17)