Miten Käyttää sqlite3 Moduuli Python 3

kirjoittaja valittu COVID-19 Helpotus Rahasto vastaanottaa lahjoituksen osana Kirjoittaa Lahjoituksia ohjelma.

Johdanto

SQLite on itsenäinen, tiedostopohjainen SQL-tietokanta. SQLite mukana tulee Python ja voidaan käyttää minkä tahansa Python sovelluksia ilman asentaa mitään lisäohjelmia.

tässä opetusohjelmassa, me mennä läpi sqlite3 moduuli Python 3., Luomme yhteyden SQLite-tietokantaan, lisätä taulukon tietokantaan, lisätä tietoja taulukon ja lukea ja muokata tietoja taulukossa.

tätä opetussuunnitelmaa varten teemme ensisijaisesti inventaariota kaloista, joita meidän on muokattava, kun kalat lisätään tai poistetaan kuvitteellisesta akvaariosta.

Esitiedot

saat kaiken irti tämän opetusohjelman, se on suositeltavaa joitakin perehtyneisyys ohjelmointi Python ja jotkut perus tausta SQL.,

Voit tarkistaa nämä tutorials tarvittavat taustatiedot:

  • Miten Koodia Python3
  • Johdatus Kyselyitä MySQL

Vaihe 1 — Luo Yhteyden SQLite-Tietokanta

Kun yhteyden SQLite-tietokantaan, meillä on pääsy tietoihin, että viime kädessä asuu tiedosto, meidän tietokone. SQLite-tietokannat ovat täysin varusteltuja SQL-moottoreita, joita voidaan käyttää moniin tarkoituksiin. Toistaiseksi harkitsemme tietokantaa, joka seuraa kalojen inventointia kuvitteellisessa akvaariossa.,

Emme voi muodostaa yhteyden SQLite tietokanta käyttäen Python sqlite3 moduuli:

import sqlite3connection = sqlite3.connect("aquarium.db")

import sqlite3 antaa meidän Python-ohjelma, pääsy sqlite3 moduuli. sqlite3.connect() funktio palauttaa Connection kohde, että käytämme vuorovaikutuksessa SQLite tietokanta järjestetään tiedosto aquarium.db. aquarium.db tiedosto luodaan automaattisesti sqlite3.connect() jos aquarium.db ei ole olemassa meidän tietokone.,

Voimme tarkistaa olemme onnistuneesti luoneet connection objekti käynnissä:

print(connection.total_changes)

Jos me suorittaa tämän Python-koodia, voimme nähdä, tuotos, kuten:

Output
0

connection.total_changes on yhteensä useita tietokannan rivit, jotka on muutettu connection. Koska SQL-komentoja ei ole vielä toteutettu, 0 total_changes pitää paikkansa.

jos löydämme milloin tahansa, että haluamme aloittaa tämän opetusohjelman uudelleen, voimme poistaa aquarium.db – tiedoston tietokoneeltamme.,

Huom: on myös mahdollista muodostaa yhteyden SQLite-tietokantaan, joka sijaitsee tiukasti muistissa (ei tiedosto), joita kulkee erityinen string ":memory:" sqlite3.connect(). Esimerkiksi sqlite3.connect(":memory:"). ":memory:" SQLite tietokanta katoaa heti, kun Python ohjelma poistuu. Tämä voi olla kätevää, jos haluat väliaikaisen hiekkalaatikon kokeilla jotain SQLite, ja ei tarvitse pitää tietoja jälkeen ohjelma poistuu.,

Vaihe 2 — Lisäämällä Tiedot SQLite Tietokanta

Nyt meillä on kytketty aquarium.db SQLite tietokanta, voimme aloittaa lisäämällä ja lukea tietoja siitä.

SQL-tietokannassa tiedot tallennetaan taulukoihin. Taulukot määrittelevät joukon sarakkeita ja sisältävät 0 tai useampia rivejä, joissa on tiedot kustakin määritellystä sarakkeesta., taulukko nimetty fish, joka seuraa seuraavat tiedot:

nimi lajit tank_number
Sammy hai 1
Jamie mustekala 7

fish taulukko seurata arvo name, species ja tank_number kunkin kala akvaariossa., Two example fish rows are listed: one row for a shark named Sammy, and one row for a cuttlefish named Jamie.

We can create this fish table in SQLite using the connection we made in Step 1:

cursor = connection.cursor()cursor.execute("CREATE TABLE fish (name TEXT, species TEXT, tank_number INTEGER)")

connection.cursor() returns a Cursor object. Cursor objects allow us to send SQL statements to a SQLite database using cursor.execute()., "CREATE TABLE fish ..." string on SQL, joka luo taulukon nimeltä fish kolme saraketta kuvattu aiemmin: name tyyppi TEXT, laji, tyyppi TEXT, ja tank_number tyyppi INTEGER.,

Nyt, että olemme luoneet taulukon, voimme lisätä riviä tietoja siihen:

cursor.execute("INSERT INTO fish VALUES ('Sammy', 'shark', 1)")cursor.execute("INSERT INTO fish VALUES ('Jamie', 'cuttlefish', 7)")

kutsumme cursor.execute() kaksi kertaa: kerran, kun haluat lisätä rivin hain Sammy säiliö 1, ja kun haluat lisätä rivin mustekala Jamie säiliö 7. "INSERT INTO fish VALUES ..." on SQL-lauseke, jonka avulla taulukkoon voi lisätä rivejä.,

seuraavassa osassa, aiomme käyttää SQL – SELECT selvitys tarkastaa rivit, me vain työnnetään meidän fish taulukko.

Vaihe 3 — Käsittely Tietoja SQLite Tietokanta

Vaihe 2 on lisätty kaksi riviä SQLite-taulun nimeltä fish., Voimme noutaa ne rivit käyttäen SELECT SQL-lause:

rows = cursor.execute("SELECT name, species, tank_number FROM fish").fetchall()print(rows)

Jos otamme tämän koodin, me katso tuotos, kuten seuraavat:

Output

cursor.execute() toimii SELECT selvitys hakea arvot name, species, ja tank_number sarakkeita fish taulukko. fetchall() hakee kaikki tulokset SELECT lausunto., When we we see a list of two tuples. Jokaisella tuplella on kolme merkintää; yksi merkintä jokaiselle kolonnille, jonka valitsimme fish taulukosta. Kaksi tuplat on tiedot meidän lisätään Vaihe 2: yksi monikko varten Sammy shark, ja yksi monikko varten Jamie cuttlefish.,

Jos halusimme hakea rivit fish taulukko, jotka vastaavat tiettyjä kriteerejä, voimme käyttää WHERE lauseke:

Jos me suorittaa tämän, näemme tuotos, kuten seuraavat:

Output

Kuten edellinen esimerkki, cursor.execute(<SQL statement>).fetchall() avulla voimme noutaa kaikki tulokset SELECT lausunto. WHERE lauseke SELECT selvitys suodattimet rivit, joissa arvo name on target_fish_name., Huomaa, että käytämme ? korvata meidän target_fish_name muuttuja osaksi SELECT lausunto. Odotamme yhdistää vain yksi rivi, ja todellakin me vain nähdä rivi Jamie cuttlefish palasi.

Varoitus: Älä koskaan käytä Python string operations dynaamisesti luoda SQL statement merkkijono. Python string-toimintojen käyttäminen SQL statement string-merkkijonon kokoamiseen tekee sinusta haavoittuvan SQL injection-hyökkäyksille. SQL-pistoskohtauksia voidaan käyttää varastamaan, muuttamaan tai muuten muokkaamaan tietokantaasi tallennettuja tietoja., Käytä aina ? paikkamerkki teidän SQL dynaamisesti korvaavien arvojen teidän Python ohjelma. Pass monikko arvoja kuin toinen argumentti Cursor.execute() sitomaan arvoja SQL-lause. Tämä korvaaminen kuvio on osoitettu täällä ja muissa osissa tämän opetusohjelman samoin.

Vaihe 4 — Muuttamalla Tiedot SQLite Tietokanta

Rivit SQLite-tietokanta voidaan muokata käyttämällä UPDATE ja DELETE SQL lausuntoja.,

sanotaan esimerkiksi, että Sammy hai siirrettiin panssarivaunuun numero 2. Voimme muuttaa Sammyn rivi fish taulukko heijastaa tätä muutosta:

antaa UPDATE SQL muuttaa tank_number ja Sammy sen uusi arvo 2. WHERE lauseke UPDATE lausunto varmistaa me vain muuttaa arvoa tank_number jos rivi on name = "Sammy".,

Jos me suorita seuraava SELECT julkilausuman, voimme vahvistaa, että päivitys oli tehty oikein:

rows = cursor.execute("SELECT name, species, tank_number FROM fish").fetchall()print(rows)

Jos me suorittaa tämän, näemme tuotos, kuten seuraavat:

Output

Huomaa, että rivi Sammy nyt on arvo 2 sen tank_number sarake.

sanotaan, että Sammy hai päästettiin luontoon, eikä se enää ollut akvaarion hallussa., Koska Sammy ei enää asuu akvaariossa, se olisi järkevää poistaa Sammy rivin fish taulukko.

Asia DELETE SQL poistaa rivin:

released_fish_name = "Sammy"cursor.execute( "DELETE FROM fish WHERE name = ?", (released_fish_name,))

asia DELETE SQL poista rivi Sammy shark. WHERE lauseke DELETE selvitys varmistetaan, me vain poistaa rivin, jos rivi on name = "Sammy".,

Jos me suorita seuraava SELECT julkilausuman, voimme vahvistaa meidän poisto oli tehty oikein:

rows = cursor.execute("SELECT name, species, tank_number FROM fish").fetchall()print(rows)

Jos otamme tämän koodin, me katso tuotos, kuten seuraavat:

Output

Huomaa, että rivi Sammy shark on nyt poissa, ja vain Jamie cuttlefish pysyy.,

Vaihe 5 — Käyttämällä Lausuntoja Automaattinen Uudelleenjärjestäminen

tämä opetusohjelma olemme käyttäneet kaksi ensisijainen esineitä vuorovaikutuksessa "aquarium.db" SQLite tietokanta: Connection objekti nimeltä connection, ja Cursor objekti nimeltä cursor.

samalla tavalla, että Python-tiedostot pitäisi olla kiinni, kun olemme tehneet työtä niiden kanssa, Connection ja Cursor objektit pitäisi myös sulkea, kun niitä ei enää tarvita.,

voidaan käyttää with ilmoitus auttaa meitä automaattisesti sulje Connection ja Cursor objektit:

closing on mukavuutta toiminto esittänyt contextlib moduuli. Kun with ilmoitus poistuu, closing takaa close() kutsutaan mitä tahansa esine on kulunut. Tässä esimerkissä käytetään kahdesti closing – funktiota., Kerran varmistaa, että Connection objekti palautetaan sqlite3.connect() on automaattisesti suljettu, ja toisen kerran varmistaa, että Cursor objekti palautetaan connection.cursor() sulkeutuu automaattisesti.,

Jos otamme tämän koodin, me katso tuotos, kuten seuraavat:

Output

Koska "SELECT 1" on SQL-lause, joka palauttaa aina yhden rivin, jossa on yksi sarake, jonka arvo on 1, on järkevää nähdä yhden monikko 1 sen ainoa arvo palasi meidän koodi.

Johtopäätös

sqlite3 moduuli on tehokas osa Python standardin kirjasto; se antaa meille mahdollisuuden työskennellä täysin varustellun levyllä SQL-tietokantaan ilman mitään lisäohjelmia.,

tässä opetusohjelmassa, me opimme, miten käyttää sqlite3 moduuli yhteyden SQLite-tietokantaan, lisätä tietoja tietokantaan, sekä lukea ja muokata tietoja tietokantaan. Matkan varrella, olemme myös oppineet, riskeistä SQL-injektio hyökkäyksiä ja miten käyttää contextlib.closing automaattisesti soittaa close() käytössä Python esineitä with lausunnot.

tästä voimme oppia lisää SQL-tietokannat, SQLite vs MySQL vs. PostgreSQL: Vertaamalla relaatiotietokantojen hallintajärjestelmiä.

Vastaa

Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *

Siirry työkalupalkkiin