1+ from flask import Flask , render_template , request , redirect , url_for , flash
2+ import sqlite3
3+ import time
4+
5+ app = Flask (__name__ )
6+ app .secret_key = 'your_secret_key' # Flash mesajları için gerekli
7+
8+ def get_db_connection ():
9+
10+ conn = sqlite3 .connect ('x4sqlite1.db' )
11+ conn .row_factory = sqlite3 .Row
12+ return conn
13+
14+
15+ @app .route ('/' )
16+ def index ():
17+ conn = get_db_connection ()
18+ tables = conn .execute ("SELECT name FROM sqlite_master WHERE type='table';" ).fetchall ()
19+ conn .close ()
20+ return render_template ('index.html' , tables = [table ['name' ] for table in tables ])
21+
22+ @app .route ('/table/<table_name>' )
23+ def select_table (table_name ):
24+ conn = get_db_connection ()
25+ data = conn .execute (f'SELECT *, rowid as id FROM { table_name } ' ).fetchall () # rowid as id eklendi
26+ columns = [column [1 ] for column in conn .execute (f'PRAGMA table_info({ table_name } )' ).fetchall ()]
27+ columns .append ('id' ) # id sütununu ekle
28+ conn .close ()
29+ return render_template ('table.html' , table_name = table_name , data = data , columns = columns )
30+
31+ @app .route ('/table/<table_name>/add' , methods = ['GET' , 'POST' ])
32+ def add_data (table_name ):
33+ conn = get_db_connection ()
34+ columns = [column [1 ] for column in conn .execute (f'PRAGMA table_info({ table_name } )' ).fetchall ()]
35+ if request .method == 'POST' :
36+ values = [request .form .get (column ) for column in columns ]
37+ placeholders = ', ' .join (['?' ] * len (columns ))
38+
39+ try :
40+ conn .execute (f'INSERT INTO { table_name } ({ ", " .join (columns )} ) VALUES ({ placeholders } )' , values )
41+ conn .commit ()
42+ except sqlite3 .IntegrityError as e :
43+ if 'UNIQUE constraint failed' in str (e ):
44+ conn .close ()
45+ flash ("Error: This operation cannot be completed because it violates a unique constraint." , "error" )
46+ return redirect (url_for ('select_table' , table_name = table_name ))
47+ else :
48+ raise
49+ conn .close ()
50+ return redirect (url_for ('select_table' , table_name = table_name ))
51+ conn .close ()
52+ return render_template ('add_data.html' , table_name = table_name , columns = columns )
53+
54+ @app .route ('/table/<table_name>/delete/<int:id>' , methods = ['POST' ])
55+ def delete_data (table_name , id ):
56+ conn = get_db_connection ()
57+ conn .execute (f'DELETE FROM { table_name } WHERE rowid = ?' , (id ,))
58+ conn .commit ()
59+ conn .close ()
60+ return redirect (url_for ('select_table' , table_name = table_name ))
61+
62+ @app .route ('/table/<table_name>/update/<int:id>' , methods = ['GET' , 'POST' ])
63+ def update_data (table_name , id ):
64+ conn = get_db_connection ()
65+ columns = [column [1 ] for column in conn .execute (f'PRAGMA table_info({ table_name } )' ).fetchall ()]
66+ if request .method == 'POST' :
67+ values = [request .form .get (column ) for column in columns ]
68+ set_clause = ', ' .join ([f'{ column } = ?' for column in columns ])
69+ values .append (id )
70+
71+ try :
72+ conn .execute (f'UPDATE { table_name } SET { set_clause } WHERE rowid = ?' , values )
73+ conn .commit ()
74+ except sqlite3 .IntegrityError as e :
75+ if 'UNIQUE constraint failed' in str (e ):
76+ conn .close ()
77+ flash ("Error: This operation cannot be completed because it violates a unique constraint." , "error" )
78+ return redirect (url_for ('select_table' , table_name = table_name ))
79+ else :
80+ raise
81+
82+ conn .close ()
83+ return redirect (url_for ('select_table' , table_name = table_name ))
84+
85+ row = conn .execute (f'SELECT *, rowid as id FROM { table_name } WHERE rowid = ?' , (id ,)).fetchone () # rowid as id eklendi
86+ conn .close ()
87+ return render_template ('update_data.html' , table_name = table_name , columns = columns , row = row )
88+
89+ @app .route ('/create_table' , methods = ['GET' , 'POST' ])
90+ def create_table ():
91+ if request .method == 'POST' :
92+ table_name = request .form ['table_name' ]
93+ columns = request .form ['columns' ]
94+ conn = get_db_connection ()
95+ try :
96+ conn .execute (f'CREATE TABLE { table_name } ({ columns } )' )
97+ conn .commit ()
98+ flash ("Table created successfully." , "success" )
99+ except sqlite3 .Error as e :
100+ flash (f"Error creating table: { e } " , "error" )
101+ finally :
102+ conn .close ()
103+ return redirect (url_for ('index' ))
104+ return render_template ('create_table.html' )
105+
106+ @app .route ('/delete_table/<table_name>' , methods = ['POST' ])
107+ def delete_table (table_name ):
108+ conn = get_db_connection ()
109+ try :
110+ conn .execute (f'DROP TABLE { table_name } ' )
111+ conn .commit ()
112+ flash ("Table deleted successfully." , "success" )
113+ except sqlite3 .Error as e :
114+ flash (f"Error deleting table: { e } " , "error" )
115+ finally :
116+ conn .close ()
117+ return redirect (url_for ('index' ))
118+
119+ @app .route ('/query' , methods = ['GET' , 'POST' ])
120+ def query ():
121+ if request .method == 'POST' :
122+ query = request .form ['query' ]
123+ conn = get_db_connection ()
124+ try :
125+ result = conn .execute (query ).fetchall ()
126+ columns = result [0 ].keys () if result else []
127+ conn .commit ()
128+ flash ("Query executed successfully." , "success" )
129+ except sqlite3 .Error as e :
130+ flash (f"Error executing query: { e } " , "error" )
131+ result = []
132+ columns = []
133+ finally :
134+ conn .close ()
135+ return render_template ('query.html' , query = query , result = result , columns = columns )
136+ return render_template ('query.html' , query = '' , result = [], columns = [])
137+
138+ if __name__ == '__main__' :
139+ app .run (debug = True )
0 commit comments