Sukurkite šią programą, kad sužinotumėte, kaip sukurti duomenų bazės lentelę ir užpildyti ją duomenimis.

„Python“ turi puikų duomenų bazių palaikymą, integruotą į standartinę biblioteką, todėl galite kurti ir sąveikauti su duomenų baze nepasitikėdami išorinėmis sistemomis, tokiomis kaip „Django ORM“.

SQLite yra lengvas ir lengvai integruojamas su Python. Atraskite pagrindinius Python duomenų bazių programavimo principus naudodami paprastą vartotojo registracijos programą.

Kaip sukurti duomenų bazę Python

Šiame vadove naudojamą kodą galite rasti GitHub saugykla

Norėdami sukurti ir sąveikauti su duomenų baze Python, jums reikia dviejų pagrindinių dalykų: a ryšį ir a žymeklį.

Ryšys padeda prisijungti prie esamos duomenų bazės arba sukurti naują. Štai kaip sukurti duomenų bazės ryšį Python su SQLite:

import sqlite3

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

# Close the connection
conn.close()

The Prisijungti() metodas patenka į esamą duomenų bazę. Jei nurodytame kelyje nėra duomenų bazės, ji ją sukurs. Baigę sąveikauti su duomenų baze, turėtumėte uždaryti duomenų bazės ryšį.

instagram viewer

Žymeklis padeda sąveikauti su prijungta duomenų baze. Norėdami vykdyti SQL užklausas savo Python programoje, naudosite žymeklį. Štai kaip sukurti žymeklį:

cursor = conn.cursor()

# Close the cursor
cursor.close()

Galite sukurti žymeklį paskambinę žymeklis () metodas atvirame ryšio objekte.

Kaip atlikti duomenų bazės operaciją Python

Naudodami žymeklį galite paleisti SQL sakinius, užklausas ar scenarijus, kad galėtumėte skaityti ar rašyti duomenis arba keisti duomenų bazės struktūrą.

Yra trys pagrindiniai metodai, kuriuos galite naudoti duomenų bazės operacijai atlikti.

  1. Kursorius.vykdyti. Šis metodas vykdys vieną SQL sakinį. Štai kaip jį naudoti:
    cursor.execute(
    CREATE TABLE IF NOT EXISTS users (
    name TEXT,
    age INTEGER
    )
    )
    Šis kodas vadina vykdyti metodą ant žymeklio, perduodant jam eilutę, kurioje yra SQL sakinys.
  2. Žymeklis.executemany. Šis metodas leidžia paleisti tą patį SQL sakinį daugiau nei vieną kartą, kiekvieną kartą naudojant skirtingus parametrus. Tam reikalingi du argumentai: SQL sakinys ir kartojamas. Tai naudinga vienu metu į duomenų bazę įterpti kelis objektus:
    data = [
    ('Alice', 25),
    ('Bob', 30),
    ('Charlie', 22)
    ]

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

    Aukščiau pateiktas kodas naudoja vykdytojas būdas kelis kartus įterpti reikšmes į duomenų bazę.

    Atkreipkite dėmesį į ? vietos žymekliai SQL sakinyje. Metodas executemany pakeis jas atitinkamomis kiekvieno objekto reikšmėmis.

  3. Cursor.executescript. Kaip rodo pavadinimas, šis metodas vykdys SQL scenarijų už jus. Galite įrašyti SQL sakinius kitame faile ir paleisti juos naudodami vykdomasis scenarijus metodas:
    with open("path/to/script.sql") as file:
    sql_script = file.read()

    cursor.executescript(sql_script)

Kaip sukurti registracijos programą naudojant Python ir SQLite3

Registracijos programos logika apima vartotojo informacijos gavimą naudojant Python ir jos saugojimą duomenų bazėje. Šie veiksmai parodys, kaip sukurti paprastą registracijos sistemą naudojant Python ir SQLite3.

1 veiksmas: prisijunkite prie esamos duomenų bazės arba sukurkite naują

Pradėkite kurdami savo programos duomenų bazę arba prisijunkite prie esamos:

import sqlite3

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

cursor = conn.cursor()

# your app's code goes here

cursor.close()

conn.close()

Aukščiau pateiktas kodas sukuria ryšio objektą ir žymeklį, skirtą sąveikai su prijungta duomenų baze.

2 veiksmas: sukurkite lentelę vartotojams

Jums reikalinga lentelė, kurioje būtų saugomi duomenys, kuriuos naudotojai pateiks registruodamiesi. Štai kaip sukurti jį naudojant žymeklį:

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

conn.commit()

Šis kodas sukurs lentelę pavadinimu vartotojų jei jo nėra jūsų duomenų bazėje. Lentelėje sukuriami keturi stulpeliai, kuriuose saugoma vartotojo informacija. El. pašto laukas yra unikalus, kad vartotojai negalėtų sukurti kelių paskyrų su tuo pačiu el.

Skambutis į conn.commit svarbu įtraukti užklausą į duomenų bazę. Be jo duomenų bazės pakeitimų nebus.

Jei naudojate executescript metodą, SQL failo pabaigoje galite pridėti raktinį žodį COMMIT, kad nereikėtų skambinti conn.commit.

3 veiksmas: surinkite vartotojo duomenis

Python funkcijos leidžia lengvai pakartotinai naudoti kodą, todėl verta sukurti funkciją, kuri tvarkytų registracijos funkciją. Ši funkcija renka vartotojo vardą, pavardę, el. pašto adresą ir slaptažodį.

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 veiksmas: patikrinkite slaptažodžio teisingumą

Modifikuoti registruotis_vartotojas funkcija, užtikrinanti, kad vartotojas du kartus įvestų tą patį slaptažodį. Jei ne, turėtumėte paraginti iš naujo įvesti slaptažodį. Tai galite pasiekti naudodami tokią kilpą:

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

Atlikus šį pakeitimą, vartotojas negali užsiregistruoti, nebent jų slaptažodžiai sutampa.

5 veiksmas: patikrinkite el. pašto unikalumą

SQL sakinys, kuris sukuria vartotojų lentelę, apibrėžia el. pašto lauką kaip unikalų. Tai reiškia, kad duomenų bazė pateiks klaidą, jei vartotojas prisiregistruos su jau esančiu el. Norint tinkamai elgtis, reikia tvarkyti Python išimtį:

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 kodas naudoja bloką try-except, kad pašalintų klaidą, kuri atsiras dėl pasikartojančių el. laiškų. Jei duomenų bazė pateikia IntegrityError pranešimą, while ciklas bus tęsiamas ir vartotojas bus raginamas įvesti kitą el. pašto adresą.

Šioje pavyzdinėje programoje galima daryti prielaidą, kad IntegrityError įvyks tik dėl pasikartojančio el. pašto adreso. Tikroje programoje tikriausiai naudosite pažangesnį klaidų apdorojimą, kad išspręstumėte kitas galinčias kilti problemas.

6 veiksmas: įdėkite vartotojo duomenis į duomenų bazę

Dabar, kai surinkote ir patikrinote vartotojo duomenis, laikas įtraukti juos į duomenų bazę. Tu gali naudoti SQL užklausą tai padaryti. Pakeiskite bandymą, išskyrus bloką, kaip nurodyta toliau:

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

Modifikuotame bloke try-except žymeklis vykdo SQL įterpimo operaciją. Galiausiai, conn.commit metodas įpareigoja SQL operaciją į duomenų bazę.

Jei atlikote visus aukščiau nurodytus veiksmus, turėtumėte turėti programą, kuri registruoja vartotojus ir išsaugo juos duomenų bazėje. Galite naudoti tokią programą kaip DB naršyklė, skirta SQLite norėdami peržiūrėti savo duomenų bazės turinį:

Duomenų bazių naudojimas vietoj kolekcijų tipų

Paprastoms duomenų bazėms gali būti lengviau sukurti savo kodą. Tačiau kai jūsų programa auga, o duomenų bazė tampa sudėtingesnė, apsvarstykite galimybę naudoti tokį įrankį kaip Django ORM, kad supaprastintumėte užduotį.

Norėdami toliau lavinti žemo lygio duomenų bazės įgūdžius, pabandykite įdiegti prisijungimo sistemą, papildančią registracijos programą.