Ehitage see rakendus, et saada teavet andmebaasitabeli loomise ja andmetega täitmise kohta.

Pythonil on oma standardteegi sisse ehitatud suurepärane andmebaasi tugi, nii et saate andmebaasi luua ja sellega suhelda ilma välistele raamistikele, nagu Django ORM, tuginemata.

SQLite on kerge ja Pythoniga hõlpsasti integreeritav. Avastage Pythonis andmebaasi programmeerimise põhiprintsiibid lihtsa kasutaja registreerimisrakendusega.

Kuidas Pythonis andmebaasi luua

Selles õpetuses kasutatud koodi leiate siit GitHubi hoidla

Pythonis andmebaasi loomiseks ja sellega suhtlemiseks vajate kahte peamist asja: a ühendus ja a kursor.

Ühendus aitab teil luua ühenduse olemasoleva andmebaasiga või luua uue. Pythonis andmebaasiühenduse loomiseks SQLite'iga toimige järgmiselt.

import sqlite3

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

# Close the connection
conn.close()

The ühenda () meetod viib olemasoleva andmebaasi tee. Kui määratud teel andmebaasi pole, loob see selle. Kui olete andmebaasiga suhtlemise lõpetanud, peaksite oma andmebaasiühenduse sulgema.

instagram viewer

Kursor aitab teil ühendatud andmebaasiga suhelda. Pythoni programmis SQL-päringute täitmiseks kasutate kursorit. Kursori loomiseks tehke järgmist.

cursor = conn.cursor()

# Close the cursor
cursor.close()

Kursori saate luua, helistades numbrile kursor() meetod avatud ühenduse objektil.

Kuidas Pythonis andmebaasitehingut sooritada

Kursori abil saate käitada SQL-lauseid, päringuid või skripte, et lugeda või kirjutada andmeid või muuta andmebaasi struktuuri.

Andmebaasi tehingu sooritamiseks saate kasutada kolme peamist meetodit.

  1. Cursor.execute. See meetod käivitab ühe SQL-lause. Kasutage seda järgmiselt.
    cursor.execute(
    CREATE TABLE IF NOT EXISTS users (
    name TEXT,
    age INTEGER
    )
    )
    See kood kutsub esile hukata meetodit kursoril, edastades sellele SQL-lauset sisaldava stringi.
  2. Kursor.executemany. See meetod võimaldab teil sama SQL-lauset käitada mitu korda, iga kord erinevate parameetritega. Selleks on vaja kahte argumenti: SQL-lause ja itereeritav. Hea kasutusvõimalus on lisada andmebaasi mitu objekti korraga:
    data = [
    ('Alice', 25),
    ('Bob', 30),
    ('Charlie', 22)
    ]

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

    Ülaltoodud kood kasutab täideviija meetod väärtuste sisestamiseks andmebaasi mitu korda.

    Pange tähele ? kohahoidjad SQL-lauses. Meetod executemany asendab need iga objekti jaoks vastavate väärtustega.

  3. Cursor.executescript. Nagu nimigi ütleb, käivitab see meetod teie eest SQL-skripti. Saate kirjutada oma SQL-laused teise faili ja käivitada need rakendusega täitmisskript meetod:
    with open("path/to/script.sql") as file:
    sql_script = file.read()

    cursor.executescript(sql_script)

Pythoni ja SQLite3-ga registreerimisrakenduse loomine

Registreerimisrakenduse loogika hõlmab Pythoni abil kasutajateabe hankimist ja selle salvestamist andmebaasi. Need sammud näitavad teile, kuidas luua Pythoni ja SQLite3 abil lihtne registreerimissüsteem.

1. samm: looge ühendus olemasoleva andmebaasiga või looge uus

Alustage oma rakenduse jaoks andmebaasi loomisest või ühenduse loomisest olemasoleva andmebaasiga.

import sqlite3

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

cursor = conn.cursor()

# your app's code goes here

cursor.close()

conn.close()

Ülaltoodud kood loob ühendatud andmebaasiga suhtlemiseks ühendusobjekti ja kursori.

2. samm: looge kasutajate tabel

Teil on vaja tabelit andmete salvestamiseks, mida kasutajad registreerimisel esitavad. Kursoriga selle loomiseks tehke järgmist.

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

conn.commit()

See kood loob tabeli nimega kasutajad kui seda teie andmebaasis pole. See loob tabelis neli veergu kasutajateabe hoidmiseks. Meiliväli on ainulaadne, et kasutajad ei saaks sama meiliga mitut kontot luua.

Kõne aadressile conn.commit on oluline päring andmebaasi sisestada. Ilma selleta ei toimu andmebaasis muudatusi.

Kui kasutate executescripti meetodit, saate oma SQL-faili lõppu lisada märksõna COMMIT, et te ei peaks kutsuma conn.commit.

3. samm: koguge kasutajaandmeid

Pythoni funktsioonid muudavad koodi taaskasutamise lihtsaks, seega on hea mõte luua funktsioon registreerimisfunktsiooni haldamiseks. See funktsioon kogub kasutaja eesnime, perekonnanime, e-posti aadressi ja parooli.

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. samm: kontrollige parooli õigsust

Muutke register_user funktsioon, mis tagab, et kasutaja sisestab kaks korda sama parooli. Kui nad seda ei tee, peaksite paluma neil parool uuesti sisestada. Seda saate saavutada sellise ahelaga:

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

Selle muudatusega ei saa kasutaja registreeruda, kui nende paroolid ei ühti.

5. samm: kontrollige meili unikaalsust

SQL-lause, mis loob kasutajate tabeli, määratleb meilivälja unikaalsena. See tähendab, et andmebaas tagastab veateate, kui kasutaja registreerub juba olemasoleva e-postiga. Õigesti tegutsemiseks peate tegema käsitleda Pythoni erandit:

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

See kood kasutab dubleerivatest meilidest tuleneva vea käsitlemiseks plokki try-except. Kui andmebaas annab IntegrityErrori, jätkub while-tsükkel, paludes kasutajal sisestada muu e-posti aadress.

Selle näidisrakenduse puhul võib eeldada, et IntegrityError ilmneb ainult korduva e-posti aadressi tõttu. Päris rakenduses kasutate tõenäoliselt muude tekkida võivate probleemide lahendamiseks täpsemat veakäsitlust.

6. samm: sisestage kasutaja andmed andmebaasi

Nüüd, kui olete kasutaja andmed kogunud ja kontrollinud, on aeg need andmebaasi lisada. Sa võid kasutada SQL-päring seda teha. Muutke proovi-välja arvatud blokeeringut järgmiselt:

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

Muudetud proovi-välja arvatud plokis täidab kursor SQL-i sisestustoimingu. Lõpuks, conn.commit meetod seob SQL-i toimingu andmebaasi.

Kui järgisite kõiki ülaltoodud samme, peaks teil olema rakendus, mis registreerib kasutajad ja salvestab nad andmebaasi. Võite kasutada rakendust nagu DB-brauser SQLite'i jaoks oma andmebaasi sisu vaatamiseks:

Andmebaaside kasutamine kollektsioonitüüpide asemel

Lihtsate andmebaaside puhul võib teil olla lihtsam oma koodi rullida. Kuna aga teie rakendus kasvab ja andmebaas muutub keerukamaks, kaaluge ülesande lihtsustamiseks sellise tööriista nagu Django ORM kasutamist.

Oma madala tasemega andmebaasioskuste harjutamise jätkamiseks proovige rakendada registreerimisprogrammi täiendamiseks sisselogimissüsteemi.