Luo tämä sovellus oppiaksesi tietokantataulukon luomisesta ja sen täyttämisestä tiedoilla.

Pythonilla on erinomainen tietokantatuki sisäänrakennettu vakiokirjastoon, joten voit luoda tietokannan ja olla vuorovaikutuksessa sen kanssa ilman, että sinun tarvitsee turvautua ulkoisiin kehyksiin, kuten Django ORM: iin.

SQLite on kevyt ja helppo integroida Pythonin kanssa. Tutustu Pythonin tietokantaohjelmoinnin perusperiaatteisiin yksinkertaisella käyttäjärekisteröintisovelluksella.

Kuinka luoda tietokanta Pythonissa

Löydät tässä opetusohjelmassa käytetyn koodin tästä GitHub-arkisto

Tietokannan luominen ja vuorovaikutus Pythonissa tarvitset kaksi pääasiaa: a yhteys ja a kohdistin.

Yhteyden avulla voit muodostaa yhteyden olemassa olevaan tietokantaan tai luoda uuden. Näin luot tietokantayhteyden Pythonissa SQLiten kanssa:

import sqlite3

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

# Close the connection
conn.close()

The kytkeä() menetelmä vie polun olemassa olevaan tietokantaan. Jos määritetyssä polussa ei ole tietokantaa, se luo sellaisen. Sinun tulee sulkea tietokantayhteys, kun olet lopettanut vuorovaikutuksen tietokannan kanssa.

Kohdistin auttaa sinua olemaan vuorovaikutuksessa yhdistetyn tietokannan kanssa. Käytät kohdistinta SQL-kyselyjen suorittamiseen Python-ohjelmassasi. Näin luot kohdistimen:

cursor = conn.cursor()

# Close the cursor
cursor.close()

Voit luoda kohdistimen soittamalla kursori() menetelmä avoimessa yhteysobjektissa.

Tietokantatapahtuman suorittaminen Pythonissa

Kohdistimen avulla voit suorittaa SQL-käskyjä, kyselyitä tai komentosarjoja tietojen lukemiseen tai kirjoittamiseen tai tietokannan rakenteen muuttamiseen.

Voit käyttää tietokantatapahtuman suorittamiseen kolmea päämenetelmää.

  1. Cursor.execute. Tämä menetelmä suorittaa yhden SQL-käskyn. Näin käytät sitä:
    cursor.execute(
    CREATE TABLE IF NOT EXISTS users (
    name TEXT,
    age INTEGER
    )
    )
    Tämä koodi kutsuu suorittaa -menetelmää kohdistimessa ja välittää sille SQL-käskyn sisältävän merkkijonon.
  2. Cursor.executemany. Tämän menetelmän avulla voit suorittaa saman SQL-käskyn useammin kuin kerran eri parametreilla joka kerta. Se vaatii kaksi argumenttia: SQL-lauseen ja iteroitavan. Hyvä käyttö sille on lisätä useita objekteja tietokantaan kerralla:
    data = [
    ('Alice', 25),
    ('Bob', 30),
    ('Charlie', 22)
    ]

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

    Yllä oleva koodi käyttää toteuttaja tapa lisätä arvoja tietokantaan useita kertoja.

    Huomaa ? paikkamerkit SQL-käskyssä. executemany-menetelmä korvaa nämä kunkin objektin vastaavilla arvoilla.

  3. Cursor.executescript. Kuten nimestä voi päätellä, tämä menetelmä suorittaa SQL-komentosarjan puolestasi. Voit kirjoittaa SQL-käskyt eri tiedostoon ja suorittaa ne suorituskirjoitus menetelmä:
    with open("path/to/script.sql") as file:
    sql_script = file.read()

    cursor.executescript(sql_script)

Kuinka rakentaa rekisteröintisovellus Pythonilla ja SQLite3:lla

Rekisteröintisovelluksen logiikkaan kuuluu käyttäjän tietojen hankkiminen Pythonilla ja niiden tallentaminen tietokantaan. Nämä vaiheet osoittavat, kuinka voit luoda yksinkertaisen rekisteröintijärjestelmän Pythonilla ja SQLite3:lla.

Vaihe 1: Yhdistä olemassa olevaan tietokantaan tai luo uusi

Aloita luomalla tietokanta sovelluksellesi tai muodostamalla yhteys olemassa olevaan tietokantaan:

import sqlite3

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

cursor = conn.cursor()

# your app's code goes here

cursor.close()

conn.close()

Yllä oleva koodi luo yhteysobjektin ja kohdistimen vuorovaikutukseen yhdistetyn tietokannan kanssa.

Vaihe 2: Luo taulukko käyttäjille

Tarvitset taulukon tallentaaksesi tiedot, jotka käyttäjät ilmoittavat rekisteröityessään. Näin luot sellaisen kohdistimella:

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

conn.commit()

Tämä koodi luo taulukon nimeltä käyttäjiä jos sitä ei ole tietokannassasi. Se luo taulukkoon neljä saraketta, jotka sisältävät käyttäjätietoja. Sähköpostikenttä on ainutlaatuinen, jotta käyttäjät eivät voi luoda useita tilejä samalla sähköpostilla.

Kutsu osoitteeseen conn.commit on tärkeää sitoa kysely tietokantaan. Ilman sitä tietokantaan ei tule muutoksia.

Jos käytät executescript-menetelmää, voit lisätä COMMIT-avainsanan SQL-tiedoston loppuun, jotta sinun ei tarvitse kutsua conn.commit-tiedostoa.

Vaihe 3: Kerää käyttäjätiedot

Python-funktioiden avulla koodin uudelleenkäyttö on helppoa, joten on hyvä idea luoda toiminto rekisteröintiominaisuuden käsittelemiseksi. Tämä toiminto kerää käyttäjän etunimen, sukunimen, sähköpostiosoitteen ja salasanan.

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

Vaihe 4: Tarkista salasanan oikeellisuus

Muokkaa register_user toiminto varmistaaksesi, että käyttäjä syöttää saman salasanan kahdesti. Jos he eivät, sinun tulee pyytää heitä antamaan salasana uudelleen. Voit saavuttaa sen tällaisella silmukalla:

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

Tämän muutoksen myötä käyttäjä ei voi rekisteröityä, elleivät heidän salasanansa täsmää.

Vaihe 5: Tarkista sähköpostin ainutlaatuisuus

SQL-lause, joka luo käyttäjätaulukon, määrittelee sähköpostikentän ainutlaatuiseksi. Tämä tarkoittaa, että tietokanta palauttaa virheilmoituksen, jos käyttäjä kirjautuu jo olemassa olevalla sähköpostilla. Toimiaksesi oikein, sinun on toimittava käsittelee Python-poikkeuksen:

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

Tämä koodi käyttää try-except-lohkoa käsittelemään virheitä, jotka johtuvat päällekkäisistä sähköpostiviesteistä. Jos tietokanta antaa IntegrityError-ilmoituksen, while-silmukka jatkuu ja pyytää käyttäjää antamaan toisen sähköpostiosoitteen.

Tässä esimerkkisovelluksessa on turvallista olettaa, että IntegrityError ilmenee vain kaksoissähköpostiosoitteen seurauksena. Oikeassa sovelluksessa käytät todennäköisesti kehittyneempää virheenkäsittelyä muiden mahdollisten ongelmien ratkaisemiseksi.

Vaihe 6: Lisää käyttäjän tiedot tietokantaan

Nyt kun olet kerännyt ja vahvistanut käyttäjän tiedot, on aika lisätä ne tietokantaan. Voit käyttää SQL-kysely tehdä niin. Muokkaa try-paitsi lohkoasi näin:

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

Muokatussa try-except-lohkossa kohdistin suorittaa SQL-lisäystoiminnon. Lopuksi, conn.commit menetelmä sitoo SQL-operaation tietokantaan.

Jos noudatit kaikkia yllä olevia vaiheita, sinulla pitäisi olla sovellus, joka rekisteröi käyttäjät ja tallentaa heidät tietokantaan. Voit käyttää sovellusta, kuten DB-selain SQLitelle nähdäksesi tietokantasi sisällön:

Tietokantojen käyttäminen kokoelmatyyppien sijaan

Yksinkertaisten tietokantojen kohdalla oman koodin rullaaminen voi olla helpompaa. Kuitenkin, kun sovelluksesi kasvaa ja tietokanta monimutkaistuu, harkitse Django ORM: n kaltaisen työkalun käyttöä tehtävän yksinkertaistamiseksi.

Jos haluat jatkaa matalan tason tietokantataitojen harjoittamista, yritä ottaa käyttöön kirjautumisjärjestelmä täydentämään rekisteröintiohjelmaa.