Spaces:
Running
on
Zero
Running
on
Zero
import duckdb | |
import pandas as pd | |
from fastapi import FastAPI | |
import gradio as gr | |
con = duckdb.connect(database="./workspace/mydatabase.duckdb") | |
con.execute("CREATE TABLE IF NOT EXISTS items (id INTEGER, name VARCHAR);") | |
def setup_database_routes(app: FastAPI): | |
def create_item(name): | |
con.execute("INSERT INTO items (name) VALUES (?);", (name,)) | |
con.commit() | |
return "Item created successfully!" | |
def read_items(): | |
cursor = con.cursor() | |
cursor.execute("SELECT * FROM items;") | |
items = cursor.fetchall() | |
df = pd.DataFrame(items, columns=["ID", "Name"]) | |
return df | |
def update_item(id, name): | |
con.execute("UPDATE items SET name = ? WHERE id = ?;", (name, id)) | |
con.commit() | |
return "Item updated successfully!" | |
def delete_item(id): | |
con.execute("DELETE FROM items WHERE id = ?;", (id,)) | |
con.commit() | |
return "Item deleted successfully!" | |
with gr.Blocks() as appdb: | |
gr.Markdown("CRUD Application") | |
with gr.Row(): | |
with gr.Column(): | |
create_name = gr.Textbox(label="Create Item") | |
create_btn = gr.Button("Create") | |
with gr.Column(): | |
read_btn = gr.Button("Read Items") | |
with gr.Row(): | |
with gr.Column(): | |
update_id = gr.Textbox(label="Update Item ID") | |
update_name = gr.Textbox(label="Update Item Name") | |
update_btn = gr.Button("Update") | |
with gr.Column(): | |
delete_id = gr.Textbox(label="Delete Item ID") | |
delete_btn = gr.Button("Delete") | |
output_text = gr.Textbox(label="Output") | |
output_table = gr.DataFrame(label="Items") | |
create_btn.click(fn=create_item, inputs=create_name, outputs=output_text) | |
read_btn.click(fn=read_items, outputs=output_table) | |
update_btn.click(fn=update_item, inputs=[update_id, update_name], outputs=output_text) | |
delete_btn.click(fn=delete_item, inputs=delete_id, outputs=output_text) | |
app.mount("/db", appdb, name="database_app") | |