Izveidojiet šo lietotni, lai uzzinātu par datu bāzes tabulas izveidi un aizpildīšanu ar datiem.

Python standarta bibliotēkā ir iebūvēts lielisks datu bāzes atbalsts, lai jūs varētu izveidot un mijiedarboties ar datu bāzi, nepaļaujoties uz ārējiem ietvariem, piemēram, Django ORM.

SQLite ir viegls un viegli integrējams ar Python. Atklājiet Python datu bāzes programmēšanas pamatprincipus, izmantojot vienkāršu lietotāju reģistrācijas lietotni.

Kā izveidot datu bāzi programmā Python

Šajā apmācībā izmantoto kodu varat atrast šajā sadaļā GitHub repozitorijs

Lai izveidotu un mijiedarbotos ar datu bāzi programmā Python, ir nepieciešamas divas galvenās lietas: a savienojums un a kursors.

Savienojums palīdz izveidot savienojumu ar esošu datu bāzi vai izveidot jaunu. Lūk, kā izveidot datu bāzes savienojumu Python ar SQLite:

import sqlite3

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

# Close the connection
conn.close()

The savienot () metode aizņem ceļu uz esošu datu bāzi. Ja norādītajā ceļā nav datu bāzes, tā izveidos to. Kad esat pabeidzis mijiedarbību ar datu bāzi, aizveriet datu bāzes savienojumu.

Kursors palīdz mijiedarboties ar pievienoto datu bāzi. Jūs izmantosit kursoru, lai Python programmā izpildītu SQL vaicājumus. Lūk, kā izveidot kursoru:

cursor = conn.cursor()

# Close the cursor
cursor.close()

Kursoru var izveidot, zvanot uz kursors () metode atvērtā savienojuma objektā.

Kā veikt datu bāzes darījumu Python

Izmantojot kursoru, varat palaist SQL paziņojumus, vaicājumus vai skriptus, lai lasītu vai rakstītu datus vai mainītu datu bāzes struktūru.

Ir trīs galvenās metodes, kuras varat izmantot, lai izpildītu datu bāzes transakciju.

  1. Kursors.izpildīt. Šī metode izpildīs vienu SQL priekšrakstu. Lūk, kā jūs to izmantojat:
    cursor.execute(
    CREATE TABLE IF NOT EXISTS users (
    name TEXT,
    age INTEGER
    )
    )
    Šis kods izsauc izpildīt metodi uz kursora, nododot tai virkni, kas satur SQL priekšrakstu.
  2. Kursors.executemany. Šī metode ļauj palaist vienu un to pašu SQL priekšrakstu vairāk nekā vienu reizi, katru reizi izmantojot dažādus parametrus. Tam nepieciešami divi argumenti: SQL priekšraksts un iterējams. Labs lietojums ir datubāzē vienlaikus ievietot vairākus objektus:
    data = [
    ('Alice', 25),
    ('Bob', 30),
    ('Charlie', 22)
    ]

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

    Iepriekš minētais kods izmanto izpildītājs metode vērtību ievietošanai datu bāzē vairākas reizes.

    Ņemiet vērā ? vietturi SQL priekšrakstā. Metode executemany aizstās tās ar atbilstošām vērtībām katram objektam.

  3. Kursors.executescript. Kā norāda nosaukums, šī metode izpildīs jūsu vietā SQL skriptu. Varat rakstīt savus SQL paziņojumus citā failā un palaist tos ar izpildskripts metode:
    with open("path/to/script.sql") as file:
    sql_script = file.read()

    cursor.executescript(sql_script)

Kā izveidot reģistrācijas lietotni, izmantojot Python un SQLite3

Reģistrācijas lietotnes loģika ietver lietotāja informācijas iegūšanu ar Python un tās saglabāšanu datu bāzē. Šīs darbības parādīs, kā izveidot vienkāršu reģistrācijas sistēmu ar Python un SQLite3.

1. darbība: izveidojiet savienojumu ar esošu datu bāzi vai izveidojiet jaunu

Sāciet, izveidojot datu bāzi savai lietotnei vai izveidojot savienojumu ar esošu:

import sqlite3

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

cursor = conn.cursor()

# your app's code goes here

cursor.close()

conn.close()

Iepriekš minētais kods izveido savienojuma objektu un kursoru, lai mijiedarbotos ar pievienoto datu bāzi.

2. darbība. Izveidojiet tabulu lietotājiem

Nepieciešama tabula, kurā uzglabāt datus, ko lietotāji norādīs reģistrējoties. Tālāk ir norādīts, kā to izveidot ar kursoru.

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

conn.commit()

Šis kods izveidos tabulu ar nosaukumu lietotājiem ja tas neeksistē jūsu datu bāzē. Tabulā tiek izveidotas četras kolonnas, kas satur lietotāja informāciju. E-pasta lauks ir unikāls, lai neļautu lietotājiem izveidot vairākus kontus ar vienu un to pašu e-pastu.

Zvans uz conn.commit ir svarīgi vaicājumu ievietot datu bāzē. Bez tā datu bāzē nebūs nekādu izmaiņu.

Ja izmantojat executescript metodi, varat pievienot COMMIT atslēgvārdu sava SQL faila beigās, lai jums nebūtu jāizsauc conn.commit.

3. darbība: vāciet lietotāja datus

Python funkcijas atvieglo koda atkārtotu izmantošanu, tāpēc ir ieteicams izveidot funkciju, lai apstrādātu reģistrācijas funkciju. Šī funkcija apkopo lietotāja vārdu, uzvārdu, e-pastu un paroli.

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

4. darbība: pārbaudiet paroles pareizību

Modificēt reģistrēt_lietotājs funkcija, lai nodrošinātu, ka lietotājs divreiz ievada vienu un to pašu paroli. Ja tā nav, jums vajadzētu lūgt viņus atkārtoti ievadīt paroli. To var panākt, izmantojot šādu cilpu:

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

Izmantojot šīs izmaiņas, lietotājs nevar reģistrēties, ja vien viņu paroles nesakrīt.

5. darbība. Pārbaudiet e-pasta unikalitāti

SQL priekšraksts, kas izveido lietotāju tabulu, definē e-pasta lauku kā unikālu. Tas nozīmē, ka datubāze atgriezīs kļūdu, ja lietotājs pierakstīsies ar jau esošu e-pastu. Lai pareizi rīkotos, jums tas ir jādara apstrādāt Python izņēmumu:

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

Šis kods izmanto bloku try-except, lai apstrādātu kļūdu, kas radīsies no dublētiem e-pastiem. Ja datu bāzē tiek parādīts ziņojums IntegrityError, kamēr cilpa turpināsies, liekot lietotājam ievadīt citu e-pasta adresi.

Šajā lietotnes paraugā var droši pieņemt, ka IntegrityError radīsies tikai e-pasta adreses dublikāta dēļ. Reālā lietotnē jūs, iespējams, izmantosit sarežģītāku kļūdu apstrādi, lai risinātu citas iespējamās problēmas.

6. darbība: ievietojiet lietotāja datus datu bāzē

Tagad, kad esat apkopojis un pārbaudījis lietotāja datus, ir pienācis laiks tos pievienot datu bāzei. Tu vari izmantot SQL vaicājums darīt tā. Mainiet savu mēģinājumu, izņemot bloku šādi:

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

Modificētajā blokā try-izņemot kursors izpilda SQL ievietošanas darbību. Visbeidzot, conn.commit metode iekļauj SQL darbību datu bāzē.

Ja veicāt visas iepriekš minētās darbības, jums vajadzētu būt lietojumprogrammai, kas reģistrē lietotājus un saglabā tos datu bāzē. Varat izmantot tādu lietotni kā DB pārlūks SQLite lai skatītu savas datu bāzes saturu:

Datubāžu izmantošana kolekcijas veidu vietā

Vienkāršām datu bāzēm var būt vieglāk izveidot savu kodu. Tomēr, tā kā jūsu lietojumprogramma aug un jūsu datu bāze kļūst sarežģītāka, apsveriet iespēju izmantot tādu rīku kā Django ORM, lai vienkāršotu uzdevumu.

Lai turpinātu praktizēt savas zemā līmeņa datubāzes prasmes, mēģiniet ieviest pieteikšanās sistēmu, kas papildina reģistrācijas programmu.