Найти - Пользователи
Полная версия: Помогите разобраться с БД
Начало » Базы данных » Помогите разобраться с БД
1
AlexandrSakhno
Я делал программу которая распознает лицо с камеры и ведет учет кто и в сколько был и все это данные сохранялись csv файле(excel), но я бы хотел, чтобы они сохранялись в базе данных для дальнейшей ее привязке к сайту. Объясните пожалуйста как это можно сделать, желательно с примером. Просто раньше я с базой данных дел не имел . Сам код и пример таблицы прикреплены. Я думал над импортированием csv в db, но тогда оно просто просто импортирует готовую таблицу, а обновляться не будет. В общем помогите пожалуйста

 import cv2
import numpy as np
import face_recognition
import os
from datetime import datetime
import sqlite3
path = 'ImagesAttendance'
images = [] 
classNames = [] 
myList = os.listdir(path)
print(myList)
for cls in myList:
    curImg = cv2.imread(f'{path}/{cls}')
    images.append(curImg)
    classNames.append(os.path.splitext(cls)[0])
print(classNames)
def findEncodings(images):
    encodeList = []
    for img in images:
        img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
        encode = face_recognition.face_encodings(img)[0]
        encodeList.append(encode)
    return encodeList
def markAttendance(name):
    with open ('Attendance.csv','r+') as f:
        myDataList = f.readlines()
        nameList = []
        for line in myDataList:
            entry = line.split(',')
            nameList.append(entry[0])
        if name not in line:
            now = datetime.now()
            dt_string = now.strftime("%H:%M:%m:%Y")
            f.writelines(f'\n{name},{dt_string}')
encodeListknown = findEncodings(images)
print('Кодирование закончено ')
cap = cv2.VideoCapture(0)
while True:
    success, img = cap.read()
    imgS = cv2.resize(img, (0, 0), fx=0.25, fy=0.25)
    imgS = cv2.cvtColor(imgS, cv2.COLOR_BGR2RGB)
    facesCurFrame = face_recognition.face_locations(imgS)
    encodesCurFrame = face_recognition.face_encodings(imgS, facesCurFrame)
    for encodeFace, faceLoc in zip(encodesCurFrame, facesCurFrame):
        matches = face_recognition.compare_faces(encodeListknown, encodeFace)
        faceDis = face_recognition.face_distance(encodeListknown, encodeFace)
        print(faceDis)
        matchIndex = np.argmin(faceDis)
        if matches[matchIndex]:
            name = classNames[matchIndex].upper()
            y1, x2, y2, x1 = faceLoc
            y1, x2, y2, x1 = y1 * 4, x2 * 4, y2 * 4, x1 * 4
            markAttendance(name)
            if faceDis[matchIndex] < 0.50:
                name = classNames[matchIndex].upper()
                markAttendance(name)
            else:
                name = 'Unknown'
            y1, x2, y2, x1 = faceLoc
            y1, x2, y2, x1 = y1 * 4, x2 * 4, y2 * 4, x1 * 4
    cv2.imshow('webcam', img)
    cv2.waitKey()
    cv2.destroyAllWindows(1)
py.user.next
AlexandrSakhno
и все это данные сохранялись csv файле(excel), но я бы хотел, чтобы они сохранялись в базе данных
CSV-файл не относится к Excel. Это Excel может просматривать и редактировать CSV-файлы. А CSV - это формат, существующий сам по себе.

Для работы с CSV в питоне есть модуль csv. Им обычно и читаешь, и пишешь CSV-данные, потому что не такой он простой, каким кажется на первый взгляд. Там есть экранирование.
Например, если ты эту строку по запятой поделишь, то получишь неправильный результат, потому что первое поле из трёх полей здесь запятую включает как простой символ.
"a,b",c,d
Там ещё есть нюансы.

AlexandrSakhno
в базе данных для дальнейшей ее привязке к сайту
Не все базы можно использовать на сайте. SQLite ты используешь обычно для программ. А для сайта изспользуется MySQL или PostgreSQL. А у тебя вообще установлены СУБД какие-нибудь? Если СУБД пользоваться не умеешь, питон тебе в этом не поможет. Надо сами эти СУБД изучать для начала.

Питон может привязываться к СУБД через обёртки. Для каждой СУБД есть своя обёртка, даже не одна обычно. Есть и платформы, которые позволяют общаться с СУБД абстрактно, переключаясь с одной СУБД на другую в любое время, незаметно для программы.

Думаю, тебе нужно именно по форматам, по СУБД знания подтянуть. Питон тут вообще ни при чём.
doza_and
AlexandrSakhno
В общем помогите пожалуйста
  • Выбрать используемую СУБД
  • Установить СУБД, сконфиругировать ее чтобы было куда писать
  • переписать def markAttendance(name)
например https://khashtamov.com/ru/postgresql-python-psycopg2/
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB