-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathdatabase_config.py
More file actions
64 lines (53 loc) · 1.97 KB
/
database_config.py
File metadata and controls
64 lines (53 loc) · 1.97 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
import sqlite3, os
DB_FOLDER = "database"
DB_NAME = "atlas.db"
DB_PATH = os.path.join(DB_FOLDER, DB_NAME)
def create_table():
if not os.path.exists(DB_FOLDER):
os.makedirs(DB_FOLDER)
print(f"[ERROR]: Folder {DB_FOLDER} gagal dibuat")
else:
print(f"[INFO]: Database {DB_NAME} berhasil dibuat di {DB_FOLDER}")
try:
connect = sqlite3.connect(DB_PATH)
cursor = connect.cursor()
print(f"[INFO]: Terhubung dengan {DB_PATH}")
cursor.execute('''
CREATE TABLE IF NOT EXISTS siswa (
id INTEGER PRIMARY KEY AUTOINCREMENT,
nisn TEXT UNIQUE NOT NULL,
nama_lengkap VARCHAR(100) NOT NULL,
kelas VARCHAR(20) NOT NULL,
jurusan VARCHAR(50) NOT NULL,
status TEXT DEFAULT 'Aktif NULLABLE'
)
''')
cursor.execute('''
CREATE TABLE IF NOT EXISTS data_wajah (
id INTEGER PRIMARY KEY AUTOINCREMENT,
id_siswa INTEGER NOT NULL,
encoding_wajah BLOB NOT NULL,
path_raw_photo VARCHAR(255) NOT NULL,
FOREIGN KEY (id_siswa) REFERENCES siswa(id) ON DELETE CASCADE
)
''')
cursor.execute('''
CREATE TABLE IF NOT EXISTS absensi (
id INTEGER PRIMARY KEY AUTOINCREMENT,
id_siswa INTEGER NOT NULL,
tanggal_absen DATE NOT NULL,
waktu_absen TIMESTAMP NOT NULL,
tipe_absen TEXT NOT NULL,
akurasi_kecocokan FLOAT NOT NULL,
FOREIGN KEY (id_siswa) REFERENCES siswa(id) ON DELETE CASCADE
)
''')
connect.commit()
print(f"[INFO]: Tabel berhasil dibuat")
except Exception as e:
print(f"[ERROR]: {e}")
finally:
if connect:
connect.close()
if __name__ == "__main__":
create_table()