Уведомления

Группа в Telegram: @pythonsu

#1 Окт. 19, 2020 14:03:44

AlexandrSakhno
Зарегистрирован: 2020-10-13
Сообщения: 2
Репутация: +  0  -
Профиль   Отправить e-mail  

Помогите разобраться с БД

Я делал программу которая распознает лицо с камеры и ведет учет кто и в сколько был и все это данные сохранялись 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)

Прикреплённый файлы:
attachment Снимок.JPG (17,3 KБ)

Офлайн

#2 Окт. 19, 2020 20:50:38

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 7943
Репутация: +  726  -
Профиль   Отправить e-mail  

Помогите разобраться с БД

AlexandrSakhno
и все это данные сохранялись csv файле(excel), но я бы хотел, чтобы они сохранялись в базе данных
CSV-файл не относится к Excel. Это Excel может просматривать и редактировать CSV-файлы. А CSV - это формат, существующий сам по себе.

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

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

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

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



Офлайн

#3 Окт. 20, 2020 14:39:31

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 4047
Репутация: +  247  -
Профиль   Отправить e-mail  

Помогите разобраться с БД

AlexandrSakhno
В общем помогите пожалуйста
  • Выбрать используемую СУБД
  • Установить СУБД, сконфиругировать ее чтобы было куда писать
  • переписать def markAttendance(name)
например https://khashtamov.com/ru/postgresql-python-psycopg2/



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version