|
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") |
|
|