rizalsaad commited on
Commit
3870101
·
verified ·
1 Parent(s): 5c0347f
Files changed (1) hide show
  1. app.py +88 -0
app.py ADDED
@@ -0,0 +1,88 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import sqlite3
2
+ import gradio as gr
3
+
4
+ # Connect to SQLite database (or create it)
5
+ conn = sqlite3.connect("users.db", check_same_thread=False)
6
+ cursor = conn.cursor()
7
+
8
+ # Create table if not exists
9
+ cursor.execute('''
10
+ CREATE TABLE IF NOT EXISTS users (
11
+ id INTEGER PRIMARY KEY AUTOINCREMENT,
12
+ name TEXT NOT NULL,
13
+ email TEXT NOT NULL UNIQUE
14
+ )
15
+ ''')
16
+ conn.commit()
17
+
18
+ # CRUD functions
19
+
20
+ def create_user(name, email):
21
+ try:
22
+ cursor.execute("INSERT INTO users (name, email) VALUES (?, ?)", (name, email))
23
+ conn.commit()
24
+ return "User created successfully!"
25
+ except sqlite3.IntegrityError:
26
+ return "Email already exists."
27
+
28
+ def read_users():
29
+ cursor.execute("SELECT * FROM users")
30
+ rows = cursor.fetchall()
31
+ if not rows:
32
+ return "No users found."
33
+ result = ""
34
+ for row in rows:
35
+ result += f"ID: {row[0]}, Name: {row[1]}, Email: {row[2]}\n"
36
+ return result
37
+
38
+ def update_user(user_id, name, email):
39
+ cursor.execute("SELECT * FROM users WHERE id = ?", (user_id,))
40
+ if cursor.fetchone() is None:
41
+ return "User ID not found."
42
+ try:
43
+ cursor.execute("UPDATE users SET name = ?, email = ? WHERE id = ?", (name, email, user_id))
44
+ conn.commit()
45
+ return "User updated successfully!"
46
+ except sqlite3.IntegrityError:
47
+ return "Email already exists."
48
+
49
+ def delete_user(user_id):
50
+ cursor.execute("SELECT * FROM users WHERE id = ?", (user_id,))
51
+ if cursor.fetchone() is None:
52
+ return "User ID not found."
53
+ cursor.execute("DELETE FROM users WHERE id = ?", (user_id,))
54
+ conn.commit()
55
+ return "User deleted successfully!"
56
+
57
+ # Gradio interface
58
+
59
+ with gr.Blocks() as demo:
60
+ gr.Markdown("# Simple SQLite3 CRUD with Gradio")
61
+
62
+ with gr.Tab("Create User"):
63
+ name_in = gr.Textbox(label="Name")
64
+ email_in = gr.Textbox(label="Email")
65
+ create_btn = gr.Button("Create User")
66
+ create_out = gr.Textbox(label="Output")
67
+ create_btn.click(create_user, inputs=[name_in, email_in], outputs=create_out)
68
+
69
+ with gr.Tab("Read Users"):
70
+ read_btn = gr.Button("Show All Users")
71
+ read_out = gr.Textbox(label="Users", lines=10)
72
+ read_btn.click(read_users, outputs=read_out)
73
+
74
+ with gr.Tab("Update User"):
75
+ update_id = gr.Number(label="User ID")
76
+ update_name = gr.Textbox(label="New Name")
77
+ update_email = gr.Textbox(label="New Email")
78
+ update_btn = gr.Button("Update User")
79
+ update_out = gr.Textbox(label="Output")
80
+ update_btn.click(update_user, inputs=[update_id, update_name, update_email], outputs=update_out)
81
+
82
+ with gr.Tab("Delete User"):
83
+ delete_id = gr.Number(label="User ID")
84
+ delete_btn = gr.Button("Delete User")
85
+ delete_out = gr.Textbox(label="Output")
86
+ delete_btn.click(delete_user, inputs=delete_id, outputs=delete_out)
87
+
88
+ demo.launch(debug=True)