Baza podataka jedna je od najkorisnijih i najpopularnijih datoteka za pohranu podataka; mogu se koristiti za pohranu bilo koje vrste podataka, uključujući tekst, brojeve, slike, binarne podatke, datoteke itd. SQLite je relacijski sustav upravljanja bazama podataka zasnovan na SQL jeziku. To je C knjižnica i pruža API za rad s drugim programskim jezicima, uključujući Python. Ne zahtijeva pokretanje odvojenog poslužiteljskog procesa po potrebi u velikim mehanizmima baza podataka kao što su MySQL i Postgresql.
Brza je i lagana, a cijela baza podataka pohranjena je u jednu datoteku diska, što je čini prijenosnom poput CSV-a ili drugih datoteka za pohranu podataka. Mnoge aplikacije koriste SQLite za internu pohranu podataka, uglavnom u okruženjima poput mobilnih uređaja ili malih aplikacija.
SQLite baza podataka za Python
Zaronimo duboko u SQLite s programskim jezikom python. U ovom uputstvu naučit ćemo prednosti korištenja SQLite-a, osnove python sqlite3 modula, stvaranje tablice u bazi podataka, umetanje podataka u tablicu, postavljanje upita iz tablice i ažuriranje podataka tablice.
Prednosti korištenja SQLitea
Glavne prednosti upotrebe SQLitea su:
- SQLite ne zahtijeva zaseban poslužiteljski proces ili sustav za rad onoliko potrebnih mehanizama za velike baze podataka.
- SQLite dolazi s nultom konfiguracijom, što znači da nije potrebno postavljanje ili administracija, što ga čini jednostavnim za upotrebu.
- Dobit ćemo jednu datoteku baze podataka, a sve se informacije pohranjuju u jedinstvenu datoteku, što datoteku čini prijenosnom, za razliku od ostalih baza podataka koje ispljunuju nekoliko datoteka.
- Dolazi s predinstaliranom standardnom knjižnicom Python, tako da je možete koristiti bez daljnje instalacije.
- SQLite je napisan na ANSI-C, što ga čini bržim. Također pruža jednostavan i jednostavan API za korištenje s Pythonom i mnogim drugim programskim jezicima.
- SQLite je dostupan na UNIX-u (Linux, Mac OS-X, Android, iOS) i Windowsima (Win32, WinCE, WinRT), tako da nije važno koje okruženje koristimo.
SQLite se također koristi u Google Chromeu za pohranu kolačića, korisničkih podataka i ostalih važnih podataka, uključujući korisničke lozinke. Android OS također koristi SQLite kao svoj primarni mehanizam baze podataka za pohranu podataka.
Python SQLite3 modul
Da bismo koristili SQLite, potreban nam je Python koji mora biti instaliran u naš sustav. Ako Python već nije instaliran u vašem sustavu, možete se upoznati s našim vodičem korak po korak za instaliranje Pythona u Linux. Mogli bismo koristiti SQLite u Pythonu koristeći sqlite3 modul dostupan u Pythonovoj standardnoj knjižnici. Gerhard Häring napisao je sqlite3 modul; pruža SQL sučelje sukladno DB-API 2.0. Dolazi s predinstaliranom standardnom knjižnicom Python, tako da ne trebamo brinuti o daljnjoj instalaciji.
Stvaranje veze s bazom podataka
Prvi korak tijekom rada s SQLiteom u Pythonu je postavljanje veze s bazom podataka. To možemo učiniti pomoću metode connect () sqlite3 za postavljanje veze. Primjer pogledajte sljedeći kod. Možete jednostavno kopirati kôd u IDE ili uređivač teksta i izvršiti ga. Ako imate problema s odabirom IDE-a za Python, možete se obratiti našem vodiču za usporedbu najboljeg python IDE-a. Preporučuje se ponovno prepisivanje koda u vaš IDE, a ako želite kopirati kôd, provjerite sintaksu ovdje prisutnim kodom.
# uvoz potrebnih modula import sqlite3 # postavljanje veze s bazom podataka conn = sqlite3.povezati ("uzorak.db ") print (" Uspješno povezano s bazom podataka ") # zatvaranje veze povez.Zatvoriti()
Gornji program stvorit će vezu s datotekom baze podataka SQLite „uzorak.db."To će dati sljedeći izlaz u terminalu.
Pogledajmo što se događa u gornjem kodu. U prvi smo red uvezli sqlite3 modul koji će nam pomoći u radu s SQLite bazama podataka u Pythonu.
U drugom retku stvaramo vezu s datotekom baze podataka SQLite pod nazivom „sample.db "pomoću Spojiti() funkcija. Funkcija connect () prihvaća put do datoteke baze podataka kao argument. Ako datoteka ne postoji u zadanom putu, tada će sama stvoriti novu datoteku baze podataka s danim imenom u toj stazi. Funkcija connect () vratit će objekt baze podataka u našem programu; vraćeni objekt pohranjujemo u varijablu s imenom spoj.
Treći redak u našem programu je jednostavan ispis izjava za prikaz poruke o uspješnoj vezi. Posljednji redak programa prekida vezu s bazom podataka pomoću Zatvoriti() funkcija objekta veze.
U prethodnom smo primjeru stvorili bazu podataka na disku, ali također možemo stvoriti bazu podataka u primarnoj RAM memoriji. Stvaranje baze podataka u RAM-u čini izvršavanje baze podataka bržim nego obično. Ipak, baza podataka stvorit će se privremeno, a kako se izvršavanje programa zaustavi, izbrisat će je iz memorije. Bazu podataka u memoriji možemo stvoriti davanjem određenog imena: memory: kao argument za Spojiti() funkcija. Pogledajte donji program kao ilustraciju.
uvoz sqlite3 conn = sqlite3.connect (": memory:") print ("\ n [+] Baza podataka uspješno je stvorena u memoriji") conn.Zatvoriti()
Gornji program stvorit će bazu podataka u RAM-u i možemo je koristiti za obavljanje gotovo svih zadataka koje možemo napraviti s bazama podataka stvorenim na disku. Ova je metoda korisna tijekom stvaranja privremene virtualne baze podataka iz nekog razloga.
Kursor SQLite3
Akursor
objekt je naše sučelje s bazom podataka, koje omogućuje pokretanje bilo kojegSQL upit
na bazi podataka. Da bismo izvršili bilo koje SQL skripte pomoću sqlite3, moramo stvoriti objekt kursora. Da bismo stvorili objekt kursora, trebamo upotrijebiti pokazivač () metoda povezanost objekt. Objekt kursora naše baze podataka možemo stvoriti pomoću sljedećeg koda.
# uvoz potrebnih modula import sqlite3 # postavljanje veze s bazom podataka conn = sqlite3.povezati ("uzorak.db ") print (" \ n [+] Uspješno povezan s bazom podataka ") cur = conn.cursor () print ("\ n [+] Pokazivač je uspješno postavljen") cur.close () # zatvaranje veze conn.Zatvoriti()
Kada se program izvrši, izlaz će se vidjeti kako je prikazano na donjoj slici.
Pogledajmo kako funkcionira gornji kod. U gornjem kodu prva, druga, treća uspostavlja vezu s bazom podataka, kao što je ranije prikazano. U četvrtom smo retku koristili pokazivač () metoda objekta povezivanja za stvaranje objekta pokazivača i spremanje vraćenog predmeta pokazivača u varijablu nazvanu "cur". Peti redak je općenito ispis () izjava. U šestom smo retku uništili objekt kursora iz memorije pomoću Zatvoriti() metoda kursora.
Tipovi podataka SQLite
Prije nastavka dalje, shvatimo prvo SQLite tipove podataka. Stroj baze podataka SQLite ima nekoliko klasa za pohranu za pohranu mnogih vrsta podataka, uključujući tekst, binarne podatke, Integer itd. Svaka vrijednost ima jedan od sljedećih tipova podataka.
SQLite tipovi podataka:
- NULL: Kao što implicira, ne sadrži ništa.
- INTEGER: Pohranjuje numeričku vrijednost poput brojeva i drugih cijelih brojeva.
- REAL: Vrijednost uključuje decimale
- TEKST: To je tekstualni niz.
- BLOB: Ovo su binarni podaci i koriste se za pohranu slika i datoteka.
Usporedba tipova podataka SQLite i Python
Puno puta trebamo koristiti python tipove podataka za pohranu nekih SQL podataka i obavljanje nekih aktivnosti. Da bismo takvo što učinili, moramo znati koji se SQL tipovi podataka odnose na koje python tipove podataka.
Sljedeći tipovi Pythona donekle su slični tipovima podataka SQLite:
Python tip | SQLite tip |
---|---|
Nijedna | NULL |
int | CIJELI |
plutati | STVARAN |
str | TEKST |
bajtova | BLOB |
Stvaranje tablice pomoću SQLitea
Da bismo stvorili tablicu koristeći SQLite, trebamo koristiti IZRADI TABELU izjava SQL-a u izvršiti() metoda kursora. Osnovna sintaksa izraza CREATE TABLE u SQL-u prikazana je u nastavku:
CREATE TABLE ime_tablice (ime_stupaca Ograničenje tipa_datoteka, ... Ime_stupaca Ograničenje tipa_datoteke);
Da bismo koristili gornju izjavu SQLite u Pythonu, moramo pokrenuti donji primjer programa. Stvorit će tablicu s imenom zaposlenik u našoj bazi podataka.
uvoz sqlite3 conn = sqlite3.povezati ("uzorak.db ") print (" \ n [+] Uspješno povezan s bazom podataka ") cur = conn.cursor () print ("\ n [+] Pokazivač je uspješno postavljen") tablica = cur.execute ("" "STVORI TABELU zaposlenika (id INT PRIMARNI KLJUČ, ime CHAR (25), plaća CHAR (25), datum pridruživanja DATUM);" "") print ("\ n [+] Tablica je uspješno kreirana") cur.close () conn.Zatvoriti()
U gore navedenom programu stvorili smo zaposlenik tablica s atributima iskaznica, ime, plata, i Datum pridruženja. Ova se tablica sada može koristiti za pohranu podataka ili postavljanje upita prema zahtjevima. U terminalu ćete vidjeti sljedeći izlaz.
U gornjem kodu koristili smo izvršiti() metoda kursora za pokretanje SQL naredbe za stvaranje tablice s danim stupcima.
Umetanje podataka u tablicu
Stvorili smo tablicu u našoj bazi podataka SQLite. Sad u njega ubacimo neke podatke pomoću SQL-a. Osnovna sintaksa INSERT izraza SQL-a je:
INSERT INTO ime_tabele (stupci_ime_1, stupci_ime_2, ...) VRIJEDNOSTI (stupci_data_1, stupci_data_1, ...)
U gornjoj sintaksi, ime_tablice naziv je tablice u koju želimo umetnuti svoje podatke. The stupac_ime_1, stupac_ime_2,.. naziv su stupaca prisutnih u tablici. The stupci_podaci_1, stupci_data_2,… su podaci koje želimo umetnuti u zadane stupce.
Pogledajmo praktični demo za umetanje podataka u tablicu. U našu ćemo tablicu s imenom dodati neke podatke zaposlenik koristeći SQLite i Python. Pokrenite donji kod da biste u tablicu umetnuli neke podatke.
uvoz sqlite3 conn = sqlite3.povezati ("uzorak.db ") print (" \ n [+] Uspješno povezan s bazom podataka ") cur = conn.cursor () print ("\ n [+] Pokazivač je uspješno postavljen") cur.execute ("INSERT INTO zaposlenika (id, ime, plaća, pridruženi_datum) VRIJEDNOSTI (1001, 'David', 50000, '1-08-2019')") cur.execute ("INSERT INTO zaposlenika (id, ime, plaća, pridruženi_datum) VRIJEDNOSTI (1002, 'Sam', 80000, '3-09-2020')") cur.execute ("INSERT INTO zaposlenika (id, ime, plaća, pridruženi_datum) VRIJEDNOSTI (1003, 'Roshan', 90000, '8-08-2020')") cur.execute ("INSERT INTO zaposlenika (id, ime, plaća, pridruženi_datum) VRIJEDNOSTI (1004, 'Kishan', 100000, '9-09-2020')") cur.execute ("INSERT INTO zaposlenika (id, ime, plaća, datum pridruživanja) VRIJEDNOSTI (1005, 'Ankit', 111000, '10 -05-2019 ')") print ("\ n [+] Podaci su uspješno umetnuti" ) cur.close () conn.commit () conn.Zatvoriti()
Gornji će kôd umetnuti neke podatke u zaposlenik tablicu koju smo stvorili ranije. Pogledajmo što se događa u kodu. Prvih pet redaka koristi se za stvaranje veze s bazom podataka i postavljanje kursora. U redovima od šest do deset moramo upotrijebiti naredbu INSERT SQL-a za umetanje podataka u tablicu zaposlenika. Moramo koristiti naziv stupca tablice zaposlenika u prvoj zagradi i podatke za stupce u drugoj zagradi. Samo trebamo koristiti počiniti() metoda objekta povezivanja prije prekida veze s bazom podataka, inače promjene koje smo napravili neće biti spremljene u bazu podataka.
Upit podataka iz tablice
Naučili smo kako umetnuti podatke u SQLite bazu podataka, ali također moramo tražiti podatke iz baze podataka kako bi ih koristili naš program ili korisnici. Za upit podataka možemo koristiti naredbu SELECT SQL-a pod metodom execute (). Osnovna sintaksa naredbe SELECT prikazana je u nastavku.
ODABERI imena_ stupaca IZName_tabele
The stupci_nazivi u sintaksi će biti naziv stupaca koje moramo upitati. Ovi stupci moraju biti prisutni u tablici čije je ime dano umjesto ime_tablice. Sada da vidimo kako bismo mogli koristiti ovu sintaksu za traženje podataka iz tablice naših zaposlenika. Samo pokrenite sljedeći kod da biste vidjeli ilustraciju.
uvoz sqlite3 conn = sqlite3.povezati ("uzorak.db ") print (" \ n [+] Uspješno povezan s bazom podataka ") cur = conn.cursor () print ("\ n [+] Pokazivač je uspješno postavljen") cur.izvršiti ("ODABERI id, ime OD zaposlenika") tablica = cur.fetchall () za i u tablici: print (i) cur.close () conn.commit () conn.Zatvoriti()
Izlaz koji pruža gornji program prikazan je u nastavku.
Gornji program tražit će tablicu zaposlenika za stupce iskaznica i Ime. Podatke koji su vraćeni možemo prikupiti pomoću dohvatiti () metoda kursora. Vraćeni podaci su python popis koji sadrži retke koje smo upitali. Da bismo prikazali pojedinačne retke, moramo koristiti petlju Python for za iteraciju po popisu; više o petlji Python for možete pročitati ovdje. Pogledajmo sada neke korisne stvari koje možemo izvršiti s naredbom SELECT.
Dohvati sve podatke iz tablice
Ponekad postoji potreba za dohvaćanjem svih zapisa iz tablice baze podataka. Da bismo dobili sve zapise pomoću SELECT naredbe SQL-a, moramo slijediti osnovnu sintaksu navedenu u nastavku:
ODABERITE * IZ ime_tablice
The * simbol će se koristiti za označavanje svih stupaca, a pomoću njega možemo postaviti upit svim stupcima tablice SQLite. Da bismo dohvatili sve zapise iz zaposlenika tablice koji smo ranije stvorili, moramo pokrenuti sljedeći kod.
uvoz sqlite3 conn = sqlite3.povezati ("uzorak.db ") print (" \ n [+] Uspješno povezan s bazom podataka ") cur = conn.cursor () print ("\ n [+] Pokazivač je uspješno postavljen") cur.izvrši ("SELECT * FROM zaposlenik") redovi = cur.fetchall () print ("\ n [+] Upit podataka \ n") za i u redovima: print (i) cur.close () conn.commit () conn.Zatvoriti()
Gornji kod prikazat će sve zapise prisutne u tablici zaposlenika koju smo ranije kreirali. Rezultat programa bit će otprilike ovako:
Upit podataka u određenom redoslijedu
Ponekad trebamo tražiti podatke iz tablice u određenom redoslijedu poput Uzlazno ili Silazno. Izraz SELECT možemo koristiti s ključnom riječi ORDER BY za prikaz redoslijeda podataka. Osnovna sintaksa ključne riječi ORDER BY u naredbi SELECT je:
ODABERITE ime_stupaca IZName ime_tablice
Pogledajmo kako možemo koristiti ključnu riječ ORDER BY za prikaz podataka iz redoslijeda tablica zaposlenika po imenu.
uvoz sqlite3 conn = sqlite3.povezati ("uzorak.db ") print (" \ n [+] Uspješno povezan s bazom podataka ") cur = conn.cursor () print ("\ n [+] Pokazivač je uspješno postavljen") cur.izvršiti ("SELECT * FROM zaposlenika ORDER BY name") tablica = cur.fetchall () za i u tablici: print (i) cur.close () conn.commit () conn.Zatvoriti()
Možda ćete vidjeti izlaz gornjeg koda, kao što je prikazano u nastavku.
U izlazu ćete primijetiti da su podaci prikazani uzlaznim redoslijedom stupca Ime.
Ažuriranje zapisa u tablici
Mnogo je situacija kada želimo ažurirati tablicu svojih baza podataka. Na primjer, ako bazu podataka koristimo za školsku prijavu, trebat ćemo ažurirati podatke ako se učenik prebaci u novi grad. Pomoću datoteke .mogu brzo ažurirati red bilo koje tablice naše baze podataka AŽURIRANJE izjava SQL-a u izvršnoj () metodi. Trebat ćemo koristiti WHERE klauzulu SQL-a kao uvjet za odabir zaposlenika. Osnovna sintaksa AŽURIRANJE Izjava je prikazana u nastavku.
AŽURIRANJE ime_tabele SET ažuriranje_obvezno WHERE Neki_uvjet
Pogledajte donji primjer kao ilustraciju UPDATE izraza.
uvoz sqlite3 conn = sqlite3.povezati ("uzorak.db ") print (" \ n [+] Uspješno povezan s bazom podataka ") cur = conn.cursor () print ("\ n [+] Pokazivač je uspješno postavljen") print ("\ n [+] Podaci prije ažuriranja \ n") cur.izvršiti ("SELECT * FROM zaposlenik") prije = cur.fetchall () za i in prije: print (i) cur.izvrši ("AŽURIRAJ SET zaposlenika SET name = 'Aditya' gdje je ime = 'Sam'") ispiši ("\ n [+] Podaci nakon ažuriranja \ n") cur.izvrši ("SELECT * FROM zaposlenik") nakon = cur.fetchall () za i in nakon: print (i) cur.close () conn.commit () conn.Zatvoriti()
Gornji program će ažurirati zaposlenika stola. Zamjenjuje ime Sam s imenom Aditya gdje god se pojavi u tablici. Pogledajte donju sliku za izlaz programa.
Zaključak
To je naš opsežni vodič za izvođenje nekih osnovnih zadataka povezanih s SQLite bazom podataka pomoću Pythona. U nadolazećem uputstvu vidjet ćemo nekoliko naprednijih upotreba koje bi vas trebale odvesti na sljedeću razinu učenja SQLite baze podataka za Python. Pratite FOSSLinux.