jueves, 9 de noviembre de 2023

archivo main.py

 from fastapi import FastAPI, HTTPException, Depends, status

from pydantic import BaseModel
from typing import Annotated
import models
from database import engine, SessionLocal
from sqlalchemy.orm import Session

app = FastAPI()

class IngresoBase(BaseModel):
    documentoingreso:str
    nombrepersona:str

class IngresoBase2(BaseModel):
    idregistro:int
    documentoingreso:str
    nombrepersona:str

def get_db():
    db=SessionLocal()
    try:
        yield db
    finally:
        db.close()

db_dependency = Annotated[Session, Depends(get_db)]

@app.post("/registro/", status_code=status.HTTP_201_CREATED)
async def crear_registro(registro:IngresoBase, db:db_dependency):
    db_registro = models.Ingreso(**registro.dict())
    db.add(db_registro)
    db.commit()
    return "El registro se realizo exitosamente"

@app.get("/listarregistros/", status_code=status.HTTP_200_OK)
async def consultar_registros(db:db_dependency):
    registros = db.query(models.Ingreso).all()
    return registros

@app.get("/consultaregistro/{documento_ingreso}", status_code=status.HTTP_200_OK)
async def consultar_registros_por_documento(documento_ingreso, db:db_dependency):
    registro = db.query(models.Ingreso).filter(models.Ingreso.documentoingreso==documento_ingreso).first()
    if registro is None:
        HTTPException(status_code=404, detail="Registro no encontrado")
    return registro

@app.delete("/borrarregisro/{id_registro}", status_code=status.HTTP_200_OK)
async def borrar_registro(id_registro, db:db_dependency):
    registroborrar = db.query(models.Ingreso).filter(models.Ingreso.idregistro==id_registro).first()
    if registroborrar is None:
        HTTPException(status_code=404, detail="No se puede borrar no exite el registro")
    db.delete(registroborrar)
    db.commit()
    return "EL registro de elimino exitosamente"

@app.post("/actualizarregistro/", status_code=status.HTTP_200_OK)
async def actualizar_registro (registro:IngresoBase2, db:db_dependency):
     registroactualizar = db.query(models.Ingreso).filter(models.Ingreso.idregistro==registro.idregistro).first()
     if registroactualizar is None:
         HTTPException(status_code=404, detail="No se encuentra el registro")
     registroactualizar.documentoingreso = registro.documentoingreso
     registroactualizar.nombrepersona = registro.nombrepersona
     db.commit()
     return "Registro actualizado exitosamente"

Archivo models.py

 from sqlalchemy import String, Integer, Column

from database import Base

class Ingreso(Base):
    __tablename__="registrosdeingreso"
    idregistro = Column(Integer, primary_key=True, index=True)
    documentoingreso = Column(String(11))
    nombrepersona = Column(String(100))

Archivo database.py


# Código de Python

from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker
from sqlalchemy.ext.declarative import declarative_base
URL_DATABASE = "mysql+pymysql://root:@localhost:3306/ejemplobd2"
engine = create_engine(URL_DATABASE)
SessionLocal = sessionmaker(autocommit=False, autoflush=False, bind=engine)
Base = declarative_base()

Como hacer una API con Python y MySQL usando FastAPI

Como hacer una API con Python y MySQL usando FastAPI




Hola, me alegra mucho estar de nuevo por aquí, hace mucho no subía videos , pero les prometo que seré mas juicioso, YouTube es lo máximo. en esta oportunidad les traigo un tutorial para hacer una Api con Python y MySQL usando Fast API, y SQLAlchemy, así que espero que les guste y que les sirva para sus proyectos.


Archivo database.py

Archivo models.py

Archivo main.py


viernes, 15 de septiembre de 2023

Como crear una API con FastaPI y como desplegarla en Lambda de AWS

 

Notas para implementar una API con FAST API y desplegarla en aws Lambda

 

1. Crear la carpeta del proyecto

2. Crear el virtual enviroment con py -m venv env 

3. se activa el entorno con env/Scripts/activate

4. Instalar librerías fastapi uvicorn y mangum con pip install fastapi uvicorn mangum

5. Creamos el archivo de requirements con pip freeze > requirements.txt

6. se genera la API en el archivo main.py, por ejemplo

 

from fastapi import FastAPI

from mangum import Mangum

 

app = FastAPI()

handler = Mangum(app)

 

@app.get("/")

async def hello():

    return {"message": "Hello From SmartGeeks"}

 

    7. Se inicializa el servidor con uvicorn main:app --reload

    8. se verifica el funcionamiento de la API en 127.0.0.1/docs

    9. se genera la carpeta de dependencias o librerías con pip  install -t lib -r requirements.txt

    10. se comprime el contenido de la carpeta dependencias con  Compress-Archive lib/*  lambda_function.zip en windows en linux o mac  (cd dependencies; zip ../aws_lambda_artifact.zip -r)

    11. se agrega el archivo main.py a la carpeta comprimida con Compress-Archive main.py -update  aws_lambda_artifact.zip

    12. Se ingresa a la consola de aws

    13. Se ingresa a lambda y se crea una función desde cero, se selecciona el nombre de la función, se selecciona python.3.11, en opciones avanzadas se selecciona habilitar la url de la función y se marca en tipo de autorización NONE luego clic en crear la función

    14. luego se va a la opción código, cargar desde y se selecciona archivo.zip -- se carga el archivo generado llamado lambda_function

    15. se va a la configuración de tiempo de ejecución y editar y allí en controlador se pone main.handler

    16. se va a información general de la función, descripción, URL de la función y clic allí y listo 

domingo, 6 de febrero de 2022

Tic en la educación - Gamificacion con Flippity

 Hola seguidores SmartGeek En este nuevo video aprenderemos algo muy práctico que nos va a ayudar a mejorar, a hacer más divertidas y dinámicas nuestras clases, tanto virtuales como presenciales, aprenderemos a implementar la técnica de la gamificación en nuestros procesos de enseñanza – aprendizaje, utilizando una herramienta en línea llamada Flippity https://flippity.net/.

Aquí podremos usar, juegos de comparación, sopas de letras, crucigramas, juegos de preguntas, juegos de mesa entre muchos otros. Así que bienvenidos a este aprendizaje practico sobre gamificación. Sitio web: https://smartgeeks.com.co/ Redes sociales ig: https://www.instagram.com/cesaraugust... Facebook: https://www.facebook.com/AndroidColom... Blog: https://smartgeeksco.blogspot.com/ Patreon: https://www.patreon.com/smartgeeks Paypal : https://paypal.me/smartgeeksstudio


martes, 27 de octubre de 2020

Guia paso a paso proyectoSistema de Ventas Java Web, MVC y MySQL

 Hola, acá podrás descargar la guía paso a paso.

Si encuentras errores no olvides comentármelo en la caja de comentarios del video


Para descargar clic

AQUI