Sestavte si tuto aplikaci, abyste se dozvěděli o vytváření databázové tabulky a jejím naplnění daty.

Python má vynikající podporu databází zabudovanou do své standardní knihovny, takže můžete vytvářet a pracovat s databází, aniž byste se spoléhali na externí rámce, jako je Django ORM.

SQLite je lehký a snadno se integruje s Pythonem. Objevte základní principy programování databází v Pythonu pomocí jednoduché aplikace pro registraci uživatelů.

Jak vytvořit databázi v Pythonu

Kód použitý pro tento tutoriál najdete v tomto úložiště GitHub

Chcete-li vytvořit databázi a pracovat s ní v Pythonu, potřebujete dvě hlavní věci: a spojení a a kurzor.

Připojení vám pomůže připojit se k existující databázi nebo vytvořit novou. Zde je návod, jak vytvořit připojení k databázi v Pythonu s SQLite:

import sqlite3

# Connect to a (new) database
conn = sqlite3.connect('path/to/database.db')

# Close the connection
conn.close()

The připojit() metoda přebírá cestu k existující databázi. Pokud na zadané cestě není žádná databáze, vytvoří se. Po dokončení práce s databází byste měli ukončit připojení k databázi.

instagram viewer

Kurzor vám pomáhá při interakci s připojenou databází. Kurzor použijete ke spouštění SQL dotazů v programu Python. Zde je návod, jak vytvořit kurzor:

cursor = conn.cursor()

# Close the cursor
cursor.close()

Kurzor můžete vytvořit voláním kurzor() metoda na otevřeném objektu připojení.

Jak provést databázovou transakci v Pythonu

Pomocí kurzoru můžete spouštět příkazy SQL, dotazy nebo skripty, číst nebo zapisovat data nebo měnit strukturu databáze.

Existují tři hlavní metody, které můžete použít k provedení databázové transakce.

  1. Cursor.execute. Tato metoda spustí jeden příkaz SQL. Používáte ji takto:
    cursor.execute(
    CREATE TABLE IF NOT EXISTS users (
    name TEXT,
    age INTEGER
    )
    )
    Tento kód volá vykonat metoda na kurzor a předá mu řetězec obsahující příkaz SQL.
  2. Cursor.executemany. Tato metoda umožňuje spustit stejný příkaz SQL více než jednou, pokaždé s jinými parametry. Vyžaduje dva argumenty: příkaz SQL a iterovatelný. Dobré využití je vložit do databáze několik objektů najednou:
    data = [
    ('Alice', 25),
    ('Bob', 30),
    ('Charlie', 22)
    ]

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

    Výše uvedený kód používá popravit mnoho metoda pro vícenásobné vkládání hodnot do databáze.

    Všimněte si ? zástupné symboly v příkazu SQL. Metoda executemany je nahradí odpovídajícími hodnotami pro každý objekt.

  3. Cursor.executescript. Jak název napovídá, tato metoda za vás spustí SQL skript. Příkazy SQL můžete zapsat do jiného souboru a spustit je pomocí souboru vykonávací skript metoda:
    with open("path/to/script.sql") as file:
    sql_script = file.read()

    cursor.executescript(sql_script)

Jak vytvořit registrační aplikaci s Pythonem a SQLite3

Logika registrační aplikace zahrnuje získání informací o uživateli pomocí Pythonu a jejich uložení do databáze. Tyto kroky vám ukážou, jak vytvořit jednoduchý registrační systém s Pythonem a SQLite3.

Krok 1: Připojte se ke stávající databázi nebo vytvořte novou

Začněte vytvořením databáze pro vaši aplikaci nebo připojením k existující:

import sqlite3

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

cursor = conn.cursor()

# your app's code goes here

cursor.close()

conn.close()

Výše uvedený kód vytvoří objekt připojení a kurzor pro interakci s připojenou databází.

Krok 2: Vytvořte tabulku pro uživatele

Potřebujete tabulku pro uložení údajů, které uživatelé poskytnou při registraci. Zde je návod, jak jej vytvořit pomocí kurzoru:

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

conn.commit()

Tento kód vytvoří tabulku s názvem uživatelů pokud ve vaší databázi neexistuje. V tabulce vytvoří čtyři sloupce, do kterých budou uloženy informace o uživateli. Pole e-mailu je jedinečné, aby uživatelům zabránilo ve vytváření více účtů se stejným e-mailem.

Výzva k conn.commit je důležité zadat dotaz do databáze. Bez něj nedojde k žádným změnám v databázi.

Pokud používáte metodu vykonatelného skriptu, můžete přidat klíčové slovo COMMIT na konec svého SQL souboru, takže nemusíte volat conn.commit.

Krok 3: Shromážděte uživatelská data

Funkce Pythonu usnadňují opětovné použití kódu, takže je dobré vytvořit funkci pro zpracování funkce registrace. Tato funkce shromažďuje jméno, příjmení, e-mail a heslo uživatele.

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

Krok 4: Zkontrolujte správnost hesla

Upravte register_user funkce, která zajistí, že uživatel zadá stejné heslo dvakrát. Pokud ne, měli byste je vyzvat k opětovnému zadání hesla. Můžete toho dosáhnout pomocí smyčky, jako je tato:

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

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

S touto změnou se uživatel nemůže zaregistrovat, pokud se jeho hesla neshodují.

Krok 5: Zkontrolujte jedinečnost e-mailu

Příkaz SQL, který vytváří tabulku uživatelů, definuje pole e-mailu jako jedinečné. To znamená, že databáze vrátí chybu, pokud se uživatel zaregistruje pomocí e-mailu, který již existuje. Chcete-li jednat správně, musíte zvládnout výjimku Pythonu:

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

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

Tento kód používá blok try-except ke zpracování chyby, ke které dojde z duplicitních e-mailů. Pokud databáze vyvolá chybu IntegrityError, smyčka while bude pokračovat a vyzve uživatele k zadání jiné e-mailové adresy.

U této ukázkové aplikace lze bezpečně předpokládat, že k chybě IntegrityError dojde pouze v důsledku duplicitní e-mailové adresy. Ve skutečné aplikaci pravděpodobně použijete pokročilejší zpracování chyb k vyřešení dalších problémů, které mohou nastat.

Krok 6: Vložte data uživatele do databáze

Nyní, když jste shromáždili a ověřili data uživatele, je čas přidat je do databáze. Můžeš použít SQL dotaz udělat to tak. Upravte svůj blok try-except takto:

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

V upraveném bloku try-except kurzor provede operaci vložení SQL. Konečně, conn.commit metoda potvrdí operaci SQL do databáze.

Pokud jste dodrželi všechny výše uvedené kroky, měli byste mít aplikaci, která uživatele registruje a ukládá do databáze. Můžete použít aplikaci jako Prohlížeč DB pro SQLite pro zobrazení obsahu vaší databáze:

Použití databází namísto typů kolekcí

U jednoduchých databází může být jednodušší vytvořit vlastní kód. Jak se však vaše aplikace rozrůstá a databáze se stává složitější, zvažte použití nástroje, jako je Django ORM, ke zjednodušení úlohy.

Chcete-li pokračovat v procvičování svých nízkoúrovňových databázových dovedností, zkuste implementovat přihlašovací systém jako doplněk k registračnímu programu.