from fastapi import FastAPI, HTTPException, Body from sqlalchemy import create_engine, Column, Integer, String from sqlalchemy.ext.declarative import declarative_base from sqlalchemy.orm import sessionmaker from fastapi.responses import HTMLResponse import gradio as gr app = FastAPI() SQLALCHEMY_DATABASE_URL = "sqlite:///./test.db" engine = create_engine(SQLALCHEMY_DATABASE_URL) SessionLocal = sessionmaker(autocommit=False, autoflush=False, bind=engine) Base = declarative_base() def create_gr_chart(data): chart = gr.LineChart(data=data) return chart.launch() class Item(Base): __tablename__ = "items" id = Column(Integer, primary_key=True, index=True) category = Column(String, index=True) value = Column(Integer) Base.metadata.create_all(bind=engine) def get_db(): db = SessionLocal() try: yield db finally: db.close() @app.post("/form/") async def store_data(item: Item, db: Session = Depends(get_db)): db.add(item) db.commit() db.refresh(item) return item @app.get("/visualization/", response_class=HTMLResponse) async def show_visualization(): # Fetch data from the database and create a Gradio chart data = get_data_from_db() # Define this function to fetch data from the database chart = create_gr_chart(data) # Define this function to create a Gradio chart return chart