Spaces:
Sleeping
Sleeping
| import sqlite3 | |
| import pandas as pd | |
| from PIL import Image | |
| from helper_fns import pil_to_binary | |
| # Function to add a new student to the database | |
| def add_student(db, firstname, lastname, matric_no, image_path): | |
| # Open the image from the given path | |
| image = Image.open(image_path) | |
| # Convert the PIL image to binary | |
| image_binary = pil_to_binary(image) | |
| # Connect to the existing database | |
| conn = sqlite3.connect(db) | |
| c = conn.cursor() | |
| # Insert the new data into the table | |
| c.execute("INSERT INTO students (first_name, last_name, matric_no, image) VALUES (?, ?, ?, ?)", | |
| (firstname, lastname, matric_no, image_binary)) | |
| # Save (commit) the changes and close the connection | |
| conn.commit() | |
| conn.close() | |
| def create_db(db_name, df): | |
| conn = sqlite3.connect(db_name) | |
| c = conn.cursor() | |
| # Create the table if it doesn't exist | |
| c.execute('''CREATE TABLE IF NOT EXISTS students | |
| (first_name TEXT, last_name TEXT, matric_no TEXT, image BLOB)''') | |
| for _, row in df.iterrows(): | |
| add_student( | |
| db_name, | |
| row['first_name'], | |
| row['last_name'], | |
| row['matric_no'], | |
| row['image_path'] | |
| ) | |
| def get_student_row(db_path, last_name, matric_no): | |
| """ | |
| Retrieve a row from the database based on the last name and matric number. | |
| Parameters: | |
| db_path (str): Path to the SQLite database file. | |
| last_name (str): The last name of the student. | |
| matric_no (str): The matriculation number of the student. | |
| Returns: | |
| tuple: The row matching the last name and matric number, or None if not found. | |
| """ | |
| conn = sqlite3.connect(db_path) | |
| cursor = conn.cursor() | |
| query = """ | |
| SELECT * FROM students | |
| WHERE last_name = ? AND matric_no = ? | |
| """ | |
| cursor.execute(query, (last_name, matric_no)) | |
| row = cursor.fetchone() | |
| conn.close() | |
| if row: | |
| columns = [col[0] for col in cursor.description] | |
| return dict(zip(columns, row)) | |
| else: | |
| return None | |
| if __name__ == '__main__': | |
| create_db('students_database.db', pd.read_csv('students_df.csv')) |