Cum se creează o aplicație de înregistrare cu Python și o bază de date

Python are un suport excelent pentru baze de date încorporat în biblioteca sa standard, astfel încât să puteți crea și interacționa cu o bază de date fără a vă baza pe cadre externe precum Django ORM.

SQLite este ușor și ușor de integrat cu Python. Descoperiți principiile de bază ale programării bazelor de date în Python cu o aplicație simplă de înregistrare a utilizatorilor.

Cum se creează o bază de date în Python

Pentru a crea și a interacționa cu o bază de date în Python, aveți nevoie de două lucruri principale: o conexiune și un cursor.

O conexiune vă ajută să vă conectați la o bază de date existentă sau să creați una nouă. Iată cum să creați o conexiune la baza de date în Python cu SQLite:

 import sqlite3


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


conn.close()

Metoda connect() preia calea către o bază de date existentă. Dacă nu există o bază de date la calea specificată, va crea una. Ar trebui să închideți conexiunea la baza de date când ați terminat de interacționat cu baza de date.

Un cursor vă ajută să interacționați cu baza de date conectată. Veți folosi un cursor pentru a executa interogări SQL în programul dvs. Python. Iată cum se creează un cursor:

 cursor = conn.cursor()


cursor.close()

Puteți crea un cursor apelând metoda cursor() pe un obiect de conexiune deschisă.

Cum să executați o tranzacție de bază de date în Python

Folosind un cursor, puteți rula instrucțiuni SQL, interogări sau scripturi, pentru a citi sau scrie date sau pentru a modifica structura bazei de date.

  Cum să schimbi numărul de telefon pe Yahoo Mail

Există trei metode principale pe care le puteți utiliza pentru a executa o tranzacție de bază de date.

  • Cursor.execută. Această metodă va rula o singură instrucțiune SQL. Iată cum îl folosiți:
     cursor.execute("""
        CREATE TABLE IF NOT EXISTS users (
            name TEXT,
            age INTEGER
        )
    """)

    Acest cod apelează metoda execute pe un cursor, trecându-i un șir care conține o instrucțiune SQL.

  • Cursor.executemany. Această metodă vă permite să rulați aceeași instrucțiune SQL de mai multe ori, cu parametri diferiți de fiecare dată. Este nevoie de două argumente: instrucțiunea SQL și una iterabilă. O bună utilizare este să inserați mai multe obiecte în baza de date simultan:
     data = [
        ('Alice', 25),
        ('Bob', 30),
        ('Charlie', 22)
    ]

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

    Codul de mai sus folosește metoda executemany pentru a introduce valori în baza de date de mai multe ori.

    Rețineți că? substituenți în instrucțiunea SQL. Metoda executemany le va înlocui pe acestea cu valorile corespunzătoare pentru fiecare obiect.

  • Cursor.executescript. După cum sugerează și numele, această metodă va executa un script SQL pentru dvs. Puteți scrie instrucțiunile dvs. SQL într-un fișier diferit și le puteți rula cu metoda executescript:
     with open("path/to/script.sql") as file:
    sql_script = file.read()

    cursor.executescript(sql_script)

  • Cum să construiți o aplicație de înregistrare cu Python și SQLite3

    Logica din spatele unei aplicații de înregistrare implică obținerea informațiilor utilizatorului cu Python și stocarea lor într-o bază de date. Acești pași vă vor arăta cum să creați un sistem simplu de înregistrare cu Python și SQLite3.

    Pasul 1: Conectați-vă la o bază de date existentă sau creați una nouă

    Începeți prin a crea o bază de date pentru aplicația dvs. sau conectați-vă la una existentă:

     import sqlite3

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

    cursor = conn.cursor()

    cursor.close()

    conn.close()

    Codul de mai sus creează un obiect de conexiune și un cursor pentru a interacționa cu baza de date conectată.

      Cum să găsești cel mai apropiat Pokéstop fără să faci un pas

    Pasul 2: Creați un tabel pentru utilizatori

    Aveți nevoie de un tabel pentru a stoca datele pe care utilizatorii le vor furniza la înregistrare. Iată cum să creați unul cu cursorul:

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

    conn.commit()

    Acest cod va crea un tabel numit utilizatori dacă nu există în baza ta de date. Acesta creează patru coloane în tabel pentru a păstra informații despre utilizator. Câmpul de e-mail este unic pentru a împiedica utilizatorii să creeze mai multe conturi cu același e-mail.

    Apelul la conn.commit este important pentru a trimite interogarea în baza de date. Fără el, nu vor exista modificări în baza de date.

    Dacă utilizați metoda executescript, puteți adăuga cuvântul cheie COMMIT la sfârșitul fișierului SQL, astfel încât să nu trebuie să apelați conn.commit.

    Pasul 3: Colectați datele utilizatorului

    Funcțiile Python facilitează reutilizarea codului, așa că este o idee bună să creați o funcție care să gestioneze caracteristica de înregistrare. Această funcție colectează numele utilizatorului, numele de familie, e-mailul și parola.

     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: ")

    Pasul 4: Verificați corectitudinea parolei

    Modificați funcția register_user pentru a vă asigura că utilizatorul introduce aceeași parolă de două ori. Dacă nu, ar trebui să le cereți să introducă din nou parola. Puteți realiza asta cu o buclă ca aceasta:

     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")

    Cu această modificare, un utilizator nu se poate înregistra decât dacă parolele lor se potrivesc.

      Ce este un atac cu injecție promptă AI și cum funcționează?

    Pasul 5: Verificați unicitatea e-mailului

    Instrucțiunea SQL care creează tabelul utilizatori definește câmpul de e-mail ca unic. Aceasta înseamnă că baza de date va returna o eroare dacă un utilizator se înscrie cu un e-mail care există deja. Pentru a acționa în mod corespunzător, trebuie să gestionați excepția 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.")

    Acest cod folosește blocul try-except pentru a gestiona eroarea care va apărea din e-mailurile duplicate. Dacă baza de date afișează o IntegrityError, bucla while va continua, solicitând utilizatorului să introducă o altă adresă de e-mail.

    Pentru această aplicație exemplu, este sigur să presupunem că o IntegrityError va apărea numai ca urmare a unei adrese de e-mail duplicate. Într-o aplicație reală, probabil că veți folosi o gestionare mai avansată a erorilor pentru a rezolva alte probleme care ar putea apărea.

    Pasul 6: Introduceți datele utilizatorului în baza de date

    Acum că ați colectat și verificat datele utilizatorului, este timpul să le adăugați la baza de date. Puteți utiliza o interogare SQL pentru a face acest lucru. Modificați blocul try-except astfel:

     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.")

    În blocul try-except modificat, cursorul execută o operație de inserare SQL. În cele din urmă, metoda conn.commit commite operația SQL în baza de date.

    Dacă ați urmat toți pașii de mai sus, ar trebui să aveți o aplicație care înregistrează utilizatorii și îi salvează în baza de date. Puteți folosi o aplicație ca DB Browser pentru SQLite pentru a vizualiza conținutul bazei de date:

    Folosind baze de date în loc de tipuri de colecție

    Pentru baze de date simple, s-ar putea să vă fie mai ușor să rulați propriul cod. Cu toate acestea, pe măsură ce aplicația dvs. crește și baza de date devine mai complexă, luați în considerare utilizarea unui instrument precum Django ORM pentru a simplifica sarcina.

    Pentru a continua să vă exersați abilitățile de bază de date de nivel scăzut, încercați să implementați un sistem de conectare pentru a completa programul de înregistrare.