Проверка наличия пользователя по базе данных Python

Возможно, покажусь тупым, что ну вообще, но не могу разобраться с этой задачей уже несколько дней ( учу недавно Python). Есть задание: проверить username по базе и если его там нет, то нужно вывести приветствие, на подобии "Вы у нас недавно, добро пожаловать"! А если он там есть, то вывести дату его последнего захода.
Если с момента последнего введения логина прошло более 180 дней, вывести сообщение: «Вам надо подтвердить логин», если меньше 180 дней, то вывести: «Ваш аккаунт подтвержден до...» и вместо многоточия сегодняшняя дата + 180 дней. Код присутствует ( в разных файлах ) Коротко о том, как работает программа: Мы вводим email и он проверяется на наличие символа "@", если его нет, вводим заново. Если есть, то делаем из почты логин путем обрезания всего до символа @ и перевода в нижний регистр всех символов

Далее выводятся все юзеры, которые уже есть в базе их последняя дата захода Нужно проверить наш логин с логинами из базы и если есть, то вы уже знаете, читайте выше. Я пытался решить все разными способами, перечитывал материал, который у меня есть, пробовал str.find()

1)learn.py

   from auth import get_email, make_username
from datetime import datetime as dt, timedelta
from db import query_user_last_seen, list_users



email = get_email()
username = make_username(email)
print("Ваш логин: " + username)

registered_users = list_users()
i = 0
while i < len(registered_users):
    username = registered_users[i][0]
    last_seen = registered_users[i][1]
    i = i + 1
    print(i, username, last_seen.date())

existing_username = list_users()[0][0]
last_seen = query_user_last_seen(existing_username)
print("Пользователь", existing_username, "последний раз заходил", last_seen)
print("Пользователь shrimp", existing_username, "последний раз заходил", 
query_user_last_seen("shrimp"))

2)auth.py

import time

def get_email(attempts=5, sleep_dur=15):
    email = input("Ваш email: ")
    tries = 1
    while (email.find("@") == -1):
        print("НЕ ТА ПОЧТА!!11!")
        tries += 1
        email = input("Попытка " + str(tries) + " Попробуйте еще раз: ")
        if tries % attempts == 0:
            print("Все блядь, приехали, попыток нет. Жди " + str(sleep_dur) + " секунд")
            time.sleep(sleep_dur)

    return email

def make_username(email):
    return email.split("@")[0].lower()

3) db.py

    import sqlite3
import random
from datetime import datetime as dt


class UsersDB:
    __instance = None

    @staticmethod
    def get_instance():
        if UsersDB.__instance is None:
            UsersDB()
        return UsersDB.__instance

    def __init__(self):
        if UsersDB.__instance is not None:
            raise Exception("You're doing it wrong, don't do it")
        else:
            self.con = sqlite3.connect(":memory:", detect_types=sqlite3.PARSE_DECLTYPES)
            self.init_db()
            UsersDB.__instance = self

    def init_db(self):
        with self.con:
            cur = self.con.cursor()
            cur.execute(
                "CREATE TABLE Users(Id INTEGER PRIMARY_KEY, username TEXT, last_seen timestamp)"
            )
            n = dt.now()
            for i, (u, t) in enumerate(
                [
                    ("sergei", n.replace(month=8, day=3)),
                    ("valentin87", n.replace(month=8, day=4)),
                    ("igor99", n.replace(month=7, day=1)),
                    ("anton4", n.replace(month=1, day=10)),
                    ("vera2000", n.replace(month=4, day=14)),
                    ("sunnyside", n.replace(month=2, day=24)),
                    ("sarah.connor", n.replace(month=1, day=2)),
                    ("andrey3", n.replace(month=4, day=21)),
                    ("alexei22", n.replace(month=2, day=17)),

                ],
                start=100,
            ):
                h = random.randrange(0, 24)
                m = random.randrange(0, 60)
                s = random.randrange(0, 60)
                us = random.randrange(0, 1000000)
                t = t.replace(hour=h, minute=m, second=s, microsecond=us)
                cur.execute("INSERT INTO Users values(?, ?, ?)", (i, u, t))


def list_users():
    users = UsersDB.get_instance()
    known_users = []
    with users.con:
        cur = users.con.cursor()
        cur.execute("SELECT username, last_seen FROM Users")
        known_users = cur.fetchall()
    return known_users #[(u, t) for _, u, t in known_users]

def query_user_last_seen(username):
    users = UsersDB.get_instance()
    with users.con:
        cur = users.con.cursor()
        cur.execute("SELECT last_seen FROM Users where username=?", (username,))
        results = cur.fetchone()
    return results[0] if (results and len(results) > 0) else dt.now()

Последний код писал не я, но по этой базе нужно проверить тот юзернейм, который мы вписываем.

У вас есть хотя-бы идеи, догадки, потому что мои догадки в итоге неправильные, либо правильные, но я не правильно их воплощаю в жизнь


Ответы (0 шт):