Как да създадете приложение за регистрация с Python и база данни

Как да създадете приложение за регистрация с Python и база данни

Python има отлична поддръжка на база данни, вградена в стандартната библиотека, така че можете да създавате и да взаимодействате с база данни, без да разчитате на външни рамки като Django ORM.

SQLite е лек и лесен за интегриране с Python. Открийте основните принципи на програмирането на бази данни в Python с просто приложение за регистрация на потребители.

Как да създадете база данни в Python

Можете да намерите кода, използван за този урок, в това хранилище на GitHub

За да създадете и взаимодействате с база данни в Python, имате нужда от две основни неща: връзка и курсор .

Връзката ви помага да се свържете със съществуваща база данни или да създадете нова. Ето как да създадете връзка с база данни в Python с SQLite:

import sqlite3# Connect to a (new) databaseconn = sqlite3.connect('path/to/database.db')# Close the connectionconn.close()

Методът connect() поема пътя към съществуваща база данни. Ако няма база данни на посочения път, тя ще създаде такава. Трябва да затворите връзката си с базата данни, когато приключите с взаимодействието с базата данни.

Курсорът ви помага да взаимодействате със свързаната база данни. Ще използвате курсор, за да изпълнявате SQL заявки във вашата програма Python. Ето как да създадете курсор:

cursor = conn.cursor()# Close the cursorcursor.close()

Можете да създадете курсор, като извикате метода cursor() на обект с отворена връзка.

Как да изпълните транзакция на база данни в Python

С помощта на курсор можете да изпълнявате SQL изрази, заявки или скриптове, за да четете или записвате данни или да променяте структурата на базата данни.

Има три основни метода, които можете да използвате, за да изпълните транзакция на база данни.

  1. Cursor.execute . Този метод ще изпълни единичен SQL оператор. Ето как го използвате: Този код извиква метода за изпълнение на курсора, като му предава низ, съдържащ SQL израз. cursor.execute(""" CREATE TABLE IF NOT EXISTS users ( name TEXT, age INTEGER )""")
  2. Cursor.executemany . Този метод ви позволява да изпълнявате един и същ SQL оператор повече от веднъж, с различни параметри всеки път. Необходими са два аргумента: SQL оператор и итерируем. Добра употреба за него е да вмъкнете няколко обекта в базата данни наведнъж: Горният код използва метода executemany за вмъкване на стойности в базата данни няколко пъти.
    data = [ ('Alice', 25), ('Bob', 30), ('Charlie', 22)]cursor.executemany("""INSERT INTO users (name, age) VALUES (?,?)""", data)

    Обърнете внимание на ? контейнери в SQL израза. Методът executemany ще ги замени със съответните стойности за всеки обект.

  3. 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 sqlite3conn = sqlite3.connect('database.db')cursor = conn.cursor()# your app's code goes herecursor.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: ") # Check password correctness 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: ") # Check password correctness 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.") breakexcept sqlite3.IntegrityError: print("Error: This email is already registered.")

В модифицирания блок try-except курсорът изпълнява SQL операция за вмъкване. И накрая, методът conn.commit ангажира SQL операцията към базата данни.

Ако сте изпълнили всички стъпки по-горе, трябва да имате приложение, което регистрира потребители и ги записва в базата данни. Можете да използвате приложение като DB Browser за SQLite, за да видите съдържанието на вашата база данни:

Приложението DB Browser за SQLite показва един потребителски запис в таблица на база данни.

Използване на бази данни вместо типове колекции

За прости бази данни може да ви е по-лесно да навиете свой собствен код. Въпреки това, тъй като вашето приложение расте и вашата база данни става все по-сложна, обмислете използването на инструмент като Django ORM, за да опростите задачата.

За да продължите да практикувате уменията си за база данни от ниско ниво, опитайте да внедрите система за влизане, която да допълни програмата за регистрация.