Як створити реєстраційну програму за допомогою Python і бази даних

Python має відмінну підтримку баз даних, вбудовану в стандартну бібліотеку, тому ви можете створювати базу даних і взаємодіяти з нею, не покладаючись на зовнішні інфраструктури, такі як Django ORM.

SQLite легкий і його легко інтегрувати з Python. Відкрийте для себе основні принципи програмування баз даних на Python за допомогою простої програми реєстрації користувачів.

Як створити базу даних на Python

Щоб створити та взаємодіяти з базою даних у Python, вам потрібні дві основні речі: підключення та курсор.

Підключення допомагає підключитися до існуючої бази даних або створити нову. Ось як створити підключення до бази даних у Python за допомогою SQLite:

 import sqlite3


conn = sqlite3.connect('path/to/database.db')


conn.close()

Метод connect() вказує шлях до існуючої бази даних. Якщо на вказаному шляху немає бази даних, її буде створено. Вам слід закрити з’єднання з базою даних, коли ви завершите взаємодію з базою даних.

Курсор допомагає взаємодіяти з підключеною базою даних. Ви будете використовувати курсор для виконання запитів SQL у вашій програмі Python. Ось як створити курсор:

 cursor = conn.cursor()


cursor.close()

Ви можете створити курсор, викликавши метод cursor() для відкритого об’єкта підключення.

Як виконати транзакцію бази даних у Python

Використовуючи курсор, ви можете запускати оператори SQL, запити або сценарії, щоб читати або записувати дані або змінювати структуру бази даних.

Є три основні методи, які можна використовувати для виконання транзакції бази даних.

  • Курсор.виконати. Цей метод запустить один оператор SQL. Ось як це використовувати:
     cursor.execute("""
        CREATE TABLE IF NOT EXISTS users (
            name TEXT,
            age INTEGER
        )
    """)

    Цей код викликає метод execute на курсорі, передаючи йому рядок, що містить оператор SQL.

  • Cursor.executemany. Цей метод дозволяє запускати один і той самий оператор SQL кілька разів із різними параметрами кожного разу. Він приймає два аргументи: інструкцію SQL і iterable. Хорошим застосуванням є вставка кількох об’єктів у базу даних одночасно:
     data = [
        ('Alice', 25),
        ('Bob', 30),
        ('Charlie', 22)
    ]

    cursor.executemany("""INSERT INTO users (name, age) VALUES (?, ?)""", data)

    Наведений вище код використовує метод executemany для багаторазового вставлення значень у базу даних.

    Зверніть увагу на ? заповнювачі в операторі SQL. Метод executemany замінить їх на відповідні значення для кожного об’єкта.

  • Cursor.executescript. Як випливає з назви, цей метод виконає для вас сценарій SQL. Ви можете написати свої оператори SQL в іншому файлі та запустити їх за допомогою методу executescript:
     with open("path/to/script.sql") as file:
    sql_script = file.read()

    cursor.executescript(sql_script)

  • Як створити реєстраційну програму за допомогою Python і SQLite3

    Логіка програми для реєстрації полягає в тому, щоб отримати інформацію про користувача за допомогою Python і зберегти її в базі даних. Ці кроки покажуть вам, як створити просту систему реєстрації за допомогою Python і SQLite3.

    Крок 1: Підключіться до наявної бази даних або створіть нову

    Почніть із створення бази даних для своєї програми або підключення до існуючої:

     import sqlite3

    conn = sqlite3.connect('database.db')

    cursor = conn.cursor()

    cursor.close()

    conn.close()

    Наведений вище код створює об’єкт підключення та курсор для взаємодії з підключеною базою даних.

    Крок 2: Створіть таблицю для користувачів

    Вам потрібна таблиця для зберігання даних, які користувачі нададуть під час реєстрації. Ось як створити його за допомогою курсора:

     cursor.execute("""
        CREATE TABLE IF NOT EXISTS users (
            first_name TEXT,
            last_name TEXT,
            email TEXT UNIQUE,
            password TEXT
        )
    """)

    conn.commit()

    Цей код створить таблицю під назвою «користувачі», якщо вона не існує у вашій базі даних. Він створює чотири стовпці в таблиці для зберігання інформації про користувача. Поле електронної пошти є унікальним, щоб запобігти створенню кількома обліковими записами з однією електронною адресою.

    Виклик conn.commit важливий для внесення запиту до бази даних. Без нього не буде змін до бази даних.

    Якщо ви використовуєте метод executescript, ви можете додати ключове слово COMMIT у кінець вашого файлу SQL, тому вам не доведеться викликати conn.commit.

    Крок 3: Зберіть дані користувача

    Функції Python спрощують повторне використання коду, тому доцільно створити функцію для обробки функції реєстрації. Ця функція збирає ім’я, прізвище, адресу електронної пошти та пароль користувача.

     def register_user():
        first_name = input("Enter your first name: ")
        last_name = input("Enter your last name: ")
        email = input("Enter your email: ")
        password1 = input("Enter your password: ")
        password2 = input("Confirm your password: ")

    Крок 4. Перевірте правильність пароля

    Змініть функцію register_user, щоб переконатися, що користувач двічі вводить той самий пароль. Якщо вони цього не зроблять, ви повинні запропонувати їм повторно ввести пароль. Ви можете досягти цього за допомогою такого циклу:

     def register_user():
        first_name = input("Enter your first name: ")
        last_name = input("Enter your last name: ")
        email = input("Enter your email: ")

        while True:
            password1 = input("Enter your password: ")
            password2 = input("Confirm your password: ")

            
            if password1 == password2:
                print("You have successfully registered!")
                break
            else:
                print("Your passwords must match")

    З цією зміною користувач не може зареєструватися, якщо його паролі не збігаються.

    Крок 5. Перевірте унікальність електронної пошти

    Інструкція SQL, яка створює таблицю користувачів, визначає поле електронної пошти як унікальне. Це означає, що база даних поверне помилку, якщо користувач зареєструється за допомогою електронної адреси, яка вже існує. Щоб діяти належним чином, вам потрібно обробити виняток Python:

     def register_user():
        first_name = input("Enter your first name: ")
        last_name = input("Enter your last name: ")

        while True:
            email = input("Enter your email: ")
            password1 = input("Enter your password: ")
            password2 = input("Confirm your password: ")

            
            if password1 == password2:
                try:
                    print("You have successfully created an account.")
                    break
                except sqlite3.IntegrityError:
                    print("Error: This email is already registered.")
            else:
                print("Your passwords must match.")

    У цьому коді використовується блок try-except для обробки помилки, яка виникає через дублікати електронних листів. Якщо база даних видає IntegrityError, цикл while продовжиться, пропонуючи користувачеві ввести іншу адресу електронної пошти.

    Для цього прикладу програми можна з упевненістю припустити, що помилка IntegrityError виникне лише в результаті дублювання електронної адреси. У справжньому додатку ви, ймовірно, використовуватимете розширенішу обробку помилок для вирішення інших проблем, які можуть виникнути.

    Крок 6: Вставте дані користувача в базу даних

    Тепер, коли ви зібрали та перевірили дані користувача, настав час додати їх до бази даних. Для цього можна використовувати SQL-запит. Змініть свій блок try-except так:

     try:
        cursor.execute("""
            INSERT INTO users (first_name, last_name, email, password)
            VALUES (?, ?, ?, ?)
        """, (first_name, last_name, email, password2))

        conn.commit()
        print("You have successfully created an account.")
        break
    except sqlite3.IntegrityError:
        print("Error: This email is already registered.")

    У зміненому блоці try-except курсор виконує операцію вставки SQL. Нарешті, метод conn.commit фіксує операцію SQL до бази даних.

    Якщо ви виконали всі описані вище дії, у вас має бути програма, яка реєструє користувачів і зберігає їх у базі даних. Ви можете використовувати такий додаток, як Браузер БД для SQLite щоб переглянути вміст вашої бази даних:

    Використання баз даних замість типів колекцій

    Для простих баз даних вам може бути легше згорнути власний код. Однак у міру того, як ваша програма зростає, а ваша база даних стає складнішою, розгляньте можливість використання такого інструменту, як Django ORM, щоб спростити завдання.

    Щоб продовжити практикувати свої навички роботи з базою даних низького рівня, спробуйте запровадити систему входу на додаток до програми реєстрації.