database connection
This commit is contained in:
		
							parent
							
								
									0a7ee559d8
								
							
						
					
					
						commit
						f218f2ed1f
					
				
					 2 changed files with 75 additions and 2 deletions
				
			
		
							
								
								
									
										71
									
								
								access_control_python/database.py
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										71
									
								
								access_control_python/database.py
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,71 @@
 | 
				
			||||||
 | 
					import mysql.connector as sql
 | 
				
			||||||
 | 
					from dataclasses import dataclass
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					HOST = "192.168.0.239"
 | 
				
			||||||
 | 
					USER = "detector"
 | 
				
			||||||
 | 
					PASSWORD = "n9ZvEmZ7xSKE7cPx"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@dataclass
 | 
				
			||||||
 | 
					class Person():
 | 
				
			||||||
 | 
					    id: int
 | 
				
			||||||
 | 
					    name: str
 | 
				
			||||||
 | 
					    surname: str
 | 
				
			||||||
 | 
					    imagefile: str
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@dataclass
 | 
				
			||||||
 | 
					class Student(Person):
 | 
				
			||||||
 | 
					    pass
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@dataclass
 | 
				
			||||||
 | 
					class Parent(Person):
 | 
				
			||||||
 | 
					    pass
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class database:
 | 
				
			||||||
 | 
					    db = None
 | 
				
			||||||
 | 
					    cursor = None
 | 
				
			||||||
 | 
					    def __init__(self) -> None:
 | 
				
			||||||
 | 
					        self.db = sql.connect(host=HOST,user =USER,password=PASSWORD,database="face_detect")
 | 
				
			||||||
 | 
					        self.cursor = self.db.cursor()
 | 
				
			||||||
 | 
					        pass
 | 
				
			||||||
 | 
					    def get_student_info(self, filename: str) -> Student:
 | 
				
			||||||
 | 
					        statement = (f'SELECT * FROM students WHERE imagefile=\"{filename}\"')
 | 
				
			||||||
 | 
					        self.cursor.execute(statement)
 | 
				
			||||||
 | 
					        result = self.cursor.fetchone()
 | 
				
			||||||
 | 
					        if len(result) == 0:
 | 
				
			||||||
 | 
					            return None
 | 
				
			||||||
 | 
					        student = Student(result[0],result[1],result[2],result[3])
 | 
				
			||||||
 | 
					        return student
 | 
				
			||||||
 | 
					    def get_parent_info(self, filename: str):
 | 
				
			||||||
 | 
					        statement = (f'SELECT * FROM parents WHERE imagefile=\"{filename}\"')
 | 
				
			||||||
 | 
					        self.cursor.execute(statement)
 | 
				
			||||||
 | 
					        result = self.cursor.fetchone()
 | 
				
			||||||
 | 
					        if len(result) == 0:
 | 
				
			||||||
 | 
					            return None
 | 
				
			||||||
 | 
					        parent = Parent(result[0],result[1],result[2],result[3])
 | 
				
			||||||
 | 
					        return parent
 | 
				
			||||||
 | 
					    def check_relationship_file(self, student_filename: str, parent_filename: str):
 | 
				
			||||||
 | 
					        statement = f'SELECT id FROM `parent-student-relations` psr WHERE psr.student_id = (SELECT id FROM students WHERE students.imagefile = \"{student_filename}\") AND psr.parent_id  = (SELECT id FROM parents WHERE parents.imagefile = "{parent_filename}")'
 | 
				
			||||||
 | 
					        self.cursor.execute(statement)
 | 
				
			||||||
 | 
					        return self.cursor.fetchone() != None
 | 
				
			||||||
 | 
					    def check_relationship(self, student: Student, parent: Parent):
 | 
				
			||||||
 | 
					        statement = f'SELECT id FROM `parent-student-relations` psr WHERE psr.student_id = {student.id} AND psr.parent_id  = {parent.id}'
 | 
				
			||||||
 | 
					        self.cursor.execute(statement)
 | 
				
			||||||
 | 
					        return self.cursor.fetchone() != None
 | 
				
			||||||
 | 
					    def log_access_student_file(self, student_filename: str, parent_filename: str):
 | 
				
			||||||
 | 
					        statement = f'INSERT INTO face_detect.`access-log` (id, student_id, parent_id, `timestamp`) VALUES(NULL, (SELECT id FROM students WHERE students.imagefile = \"{student_filename}\"),  (SELECT id FROM parents WHERE parents.imagefile = "{parent_filename}"), NULL)'
 | 
				
			||||||
 | 
					        self.cursor.execute(statement)
 | 
				
			||||||
 | 
					        self.db.commit()
 | 
				
			||||||
 | 
					    def log_access_parent_file(self, parent_filename: str):
 | 
				
			||||||
 | 
					        statement = f'INSERT INTO face_detect.`access-log` (id, student_id, parent_id, `timestamp`) VALUES(NULL, NULL,  (SELECT id FROM parents WHERE parents.imagefile = "{parent_filename}"), NULL)'
 | 
				
			||||||
 | 
					        self.cursor.execute(statement)
 | 
				
			||||||
 | 
					        self.db.commit()
 | 
				
			||||||
 | 
					    def log_access_student(self, student: Student, parent: Parent):
 | 
				
			||||||
 | 
					        statement = f'INSERT INTO face_detect.`access-log` (id, student_id, parent_id, `timestamp`) VALUES(NULL, {student.id},  {parent.id}, NULL)'
 | 
				
			||||||
 | 
					        self.cursor.execute(statement)
 | 
				
			||||||
 | 
					        self.db.commit()
 | 
				
			||||||
 | 
					    def log_access_parent(self, parent: Parent):
 | 
				
			||||||
 | 
					        statement = f'INSERT INTO face_detect.`access-log` (id, student_id, parent_id, `timestamp`) VALUES(NULL, NULL,  {parent.id}, NULL)'
 | 
				
			||||||
 | 
					        self.cursor.execute(statement)
 | 
				
			||||||
 | 
					        self.db.commit()
 | 
				
			||||||
 | 
					    def fetch_log() -> list:
 | 
				
			||||||
 | 
					        pass
 | 
				
			||||||
| 
						 | 
					@ -3,12 +3,14 @@ import threading
 | 
				
			||||||
import time
 | 
					import time
 | 
				
			||||||
import face_processing as fp
 | 
					import face_processing as fp
 | 
				
			||||||
from access_control import access_control
 | 
					from access_control import access_control
 | 
				
			||||||
 | 
					from database import database, Student, Parent
 | 
				
			||||||
 | 
					
 | 
				
			||||||
SERIAL_PORT = "COM12"
 | 
					SERIAL_PORT_STM32 = "COM12"
 | 
				
			||||||
 | 
					SERIAL_PORT_DISPLAY = "COM15"
 | 
				
			||||||
CAMERA_INDEX = 0
 | 
					CAMERA_INDEX = 0
 | 
				
			||||||
 | 
					
 | 
				
			||||||
cam = cv2.VideoCapture(CAMERA_INDEX)
 | 
					cam = cv2.VideoCapture(CAMERA_INDEX)
 | 
				
			||||||
stm32 = access_control(SERIAL_PORT)
 | 
					stm32 = access_control(SERIAL_PORT_STM32)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
global img
 | 
					global img
 | 
				
			||||||
global frame_ready
 | 
					global frame_ready
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue