sqlite3 / app.py
rizalsaad's picture
app.py
3870101 verified
Raw
History Blame Contribute Delete
2.87 kB
import sqlite3
import gradio as gr
# Connect to SQLite database (or create it)
conn = sqlite3.connect("users.db", check_same_thread=False)
cursor = conn.cursor()
# Create table if not exists
cursor.execute('''
CREATE TABLE IF NOT EXISTS users (
id INTEGER PRIMARY KEY AUTOINCREMENT,
name TEXT NOT NULL,
email TEXT NOT NULL UNIQUE
)
''')
conn.commit()
# CRUD functions
def create_user(name, email):
try:
cursor.execute("INSERT INTO users (name, email) VALUES (?, ?)", (name, email))
conn.commit()
return "User created successfully!"
except sqlite3.IntegrityError:
return "Email already exists."
def read_users():
cursor.execute("SELECT * FROM users")
rows = cursor.fetchall()
if not rows:
return "No users found."
result = ""
for row in rows:
result += f"ID: {row[0]}, Name: {row[1]}, Email: {row[2]}\n"
return result
def update_user(user_id, name, email):
cursor.execute("SELECT * FROM users WHERE id = ?", (user_id,))
if cursor.fetchone() is None:
return "User ID not found."
try:
cursor.execute("UPDATE users SET name = ?, email = ? WHERE id = ?", (name, email, user_id))
conn.commit()
return "User updated successfully!"
except sqlite3.IntegrityError:
return "Email already exists."
def delete_user(user_id):
cursor.execute("SELECT * FROM users WHERE id = ?", (user_id,))
if cursor.fetchone() is None:
return "User ID not found."
cursor.execute("DELETE FROM users WHERE id = ?", (user_id,))
conn.commit()
return "User deleted successfully!"
# Gradio interface
with gr.Blocks() as demo:
gr.Markdown("# Simple SQLite3 CRUD with Gradio")
with gr.Tab("Create User"):
name_in = gr.Textbox(label="Name")
email_in = gr.Textbox(label="Email")
create_btn = gr.Button("Create User")
create_out = gr.Textbox(label="Output")
create_btn.click(create_user, inputs=[name_in, email_in], outputs=create_out)
with gr.Tab("Read Users"):
read_btn = gr.Button("Show All Users")
read_out = gr.Textbox(label="Users", lines=10)
read_btn.click(read_users, outputs=read_out)
with gr.Tab("Update User"):
update_id = gr.Number(label="User ID")
update_name = gr.Textbox(label="New Name")
update_email = gr.Textbox(label="New Email")
update_btn = gr.Button("Update User")
update_out = gr.Textbox(label="Output")
update_btn.click(update_user, inputs=[update_id, update_name, update_email], outputs=update_out)
with gr.Tab("Delete User"):
delete_id = gr.Number(label="User ID")
delete_btn = gr.Button("Delete User")
delete_out = gr.Textbox(label="Output")
delete_btn.click(delete_user, inputs=delete_id, outputs=delete_out)
demo.launch(debug=True)