În acest tutorial, vom lucra cu baza de date SQLite3 folosind programatic Python.
SQLite în general este o bază de date fără server pe care o puteți utiliza în aproape toate limbajele de programare, inclusiv Python. Fără Server înseamnă că nu este nevoie să instalați un server separat pentru a lucra cu SQLite, astfel încât să vă puteți conecta direct la baza de date.
SQLite este o bază de date ușor, care poate oferi un sistem de gestionare a bazelor de date relaționale cu zero-configurare, deoarece nu este nevoie să configurați sau să configurați ceva să-l folosească.,
vom folosi versiunea SQLite 3 sau SQLite3, deci să începem.
Cuprins
Creare Conexiune
Pentru a utiliza SQLite3 în Python, mai întâi de toate, va trebui să importe sqlite3 module și apoi a crea o conexiune obiect care ne va conecta la baza de date și vor să ne executa declaratii SQL.
un obiect de conexiune folosind connect() funcția:
import sqlite3con = sqlite3.connect('mydatabase.db')
Care va crea un nou fișier cu numele ‘mydatabase.db’.,
SQLite3 Cursor
pentru a executa declarații SQLite în Python, aveți nevoie de un obiect cursor. Puteți să o creați folosind metoda cursor ().
cursorul SQLite3 este o metodă a obiectului de conectare. Pentru a executa SQLite3 declarații, ar trebui să stabilească o conexiune la prima și apoi a crea un obiect de cursorul folosind conexiunea obiect, după cum urmează:
con = sqlite3.connect('mydatabase.db')cursorObj = con.cursor()
Acum putem folosi cursorul obiect pentru a apela execute() metoda pentru a executa orice SQL interogări.,când creați o conexiune cu SQLite, aceasta va crea automat un fișier de bază de date dacă nu există deja. Acest fișier de bază de date este creat pe disc; putem crea, de asemenea, o bază de date în RAM folosind :memorie: cu funcția de conectare. Această bază de date se numește bază de date în memorie.
luați în considerare codul de mai jos în care am creat o bază de date cu o încercare, cu excepția și în cele din urmă blochează să se ocupe de orice excepții:
Mai întâi, importăm modulul sqlite3, apoi definim o funcție sql_connection., În interiorul acestei funcții, avem un bloc try în care funcția connect () returnează un obiect de conexiune după stabilirea conexiunii.
apoi avem, cu excepția blocului, care, în caz de excepții, imprimă mesajul de eroare. Dacă nu există erori, conexiunea va fi stabilită și va afișa un mesaj după cum urmează.
după aceea, ne-am închis conexiunea în blocul final. Închiderea unei conexiuni este opțională, dar este o bună practică de programare, astfel încât să eliberați memoria de orice resurse neutilizate.,pentru a crea un tabel în SQLite3, puteți utiliza interogarea Creare tabel în metoda execute (). Luați în considerare următorii pași:
- creați un obiect de conexiune.
- din obiectul conexiune, creați un obiect cursor.
- folosind obiectul cursor, apelați metoda execute cu interogarea create table ca parametru.,
Să creeze angajați cu următoarele atribute:
employees (id, name, salary, department, position, hireDate)
acest cod va fi o astfel de prognoze:
În codul de mai sus, am definit două metode, prima stabilește o conexiune și cea de-a doua metodă creează un cursor obiect să execute declarația create table.metoda commit () salvează toate modificările pe care le facem. În cele din urmă, ambele metode sunt numite.pentru a verifica dacă tabelul nostru este creat, puteți utiliza browserul DB pentru SQLite pentru a vizualiza tabelul. Deschide baza de date mydatabase.,fișierul db cu programul și ar trebui să vedeți tabelul dvs.:
Insert in Table
pentru a insera date într-un tabel, folosim instrucțiunea INSERT INTO. Luați în considerare următoarea linie de cod:
cursorObj.execute("INSERT INTO employees VALUES(1, 'John', 700, 'HR', 'Manager', '2017-01-04')")con.commit()
Pentru a verifica dacă datele sunt introduse, faceți clic pe Browse Date în DB Browser:
putem trece, de asemenea, valori/argumente pentru a o INTRODUCE declarația execute() metodă. Puteți folosi semnul de întrebare (?) ca substituent pentru fiecare valoare., Sintaxa de adaos va fi astfel:
cursorObj.execute('''INSERT INTO employees(id, name, salary, department, position, hireDate) VALUES(?, ?, ?, ?, ?, ?)''', entities)
în cazul în Care entitățile conține valorile pentru înlocuitori, după cum urmează:
entities = (2, 'Andrew', 800, 'IT', 'Tech', '2018-02-06')
tot codul este după cum urmează:
Actualizare Tabel
Pentru a actualiza masă, pur și simplu a crea o conexiune, apoi a crea un cursor obiect folosind conexiunea și în cele din urmă a utiliza ACTUALIZAREA declarație în execute() metodă.să presupunem că dorim să actualizăm numele angajatului al cărui id este egal cu 2., Pentru actualizare, vom folosi declarația de actualizare și pentru angajatul al cărui id este egal cu 2. Vom folosi clauza WHERE ca o condiție pentru a selecta acest angajat.
Considerăm următorul cod:
Acest lucru se va schimba numele de Andrew Rogers, după cum urmează:
Select
puteți folosi select pentru a selecta date dintr-un tabel special. Dacă doriți să selectați toate coloanele datelor dintr-un tabel, puteți utiliza asteriscul (*)., Sintaxa pentru aceasta va fi următoarea:
select * from table_name
în SQLite3, instrucțiunea SELECT este executată în metoda execute a obiectului cursor., De exemplu, selectați toate coloanele a angajaților tabel, executați următorul cod:
cursorObj.execute('SELECT * FROM employees ')
Dacă doriți să selectați câteva coloane dintr-un tabel, apoi specificați coloane, cum ar fi următoarele:
select column1, column2 from tables_name
De exemplu,
cursorObj.execute('SELECT id, name FROM employees')
select selectează datele necesare din baza de date de masă, și, dacă doriți pentru a aduce datele selectate, la fetchall() metoda de cursorul obiect este folosit. Vom demonstra acest lucru în secțiunea următoare.,pentru a prelua datele dintr-o bază de date, vom executa instrucțiunea SELECT și apoi vom folosi metoda fetchall() a obiectului cursor pentru a stoca valorile într-o variabilă. După aceea, vom trece prin variabilă și vom imprima toate valorile.
acest cod va fi o astfel de prognoze:
codul De mai sus va imprima înregistrările din baza noastră de date după cum urmează:
de asemenea, puteți utiliza fetchall() într-o singură linie, după cum urmează:
Dacă doriți pentru a aduce datelor specifice din baza de date, puteți utiliza clauza where., De exemplu, dorim să obținem ID-urile și numele acelor angajați al căror salariu este mai mare de 800. Pentru aceasta, să populăm tabelul nostru cu mai multe rânduri, apoi să executăm interogarea noastră.
puteți utiliza instrucțiunea insert pentru a popula datele sau le puteți introduce manual în programul DB browser.acum, pentru a prelua id-ul și numele celor care au un salariu mai mare de 800:
în instrucțiunea SELECT de mai sus, în loc să folosim asteriscul (*), am specificat atributele id și name., Rezultatul va fi următorul:
SQLite3 rowcount
SQLite3 rowcount este utilizat pentru a returna numărul de rânduri care sunt afectate sau selectate de cea mai recentă interogare SQL executată.
când folosim rowcount cu instrucțiunea SELECT, -1 va fi returnat, deoarece câte rânduri sunt selectate nu sunt cunoscute până când toate sunt preluate., Luați în considerare exemplul de mai jos:
print(cursorObj.execute('SELECT * FROM employees').rowcount)
prin Urmare, pentru a obține numărul de rând, aveți nevoie pentru a aduce toate datele, și apoi a obține lungimea de rezultat:
rows = cursorObj.fetchall()print len (rows)
atunci Când utilizați ȘTERGE declarație, fără nici o condiție (o clauză where), care va șterge toate rândurile din tabel, și se va întoarce numărul total de șters rânduri în rowcount.
print(cursorObj.execute('DELETE FROM employees').rowcount)
Dacă nu rând este șters, acesta va reveni la zero.,
Lista de tabele
Pentru a lista toate tabele într-o bază de date SQLite3, ar trebui să interogare sqlite_master masă și de a folosi apoi fetchall() să aducă rezultatele de la SELECT.
sqlite_master este masa principală din sqlite3, care stochează toate tabelele.
aceasta va enumera toate tabelele după cum urmează:
verificați dacă există sau nu un tabel
când creați un tabel, ar trebui să ne asigurăm că tabelul nu există deja. În mod similar, atunci când eliminați/ ștergeți un tabel, tabelul ar trebui să existe.,s” cu DROP TABLE declarație, după cum urmează:
drop table if exists table_name
De exemplu,
cursorObj.execute('drop table if exists projects')
putem verifica, de asemenea, în cazul în care masa vrem să acceseze există sau nu, executând următoarea interogare:
cursorObj.execute('SELECT name from sqlite_master WHERE type = "table" AND name = "employees"')print(cursorObj.fetchall())
în Cazul angajaților de masă există, se va returna numele său, după cum urmează:
Dacă numele tabelului am specificat nu există, un array gol vor fi returnate:
Drop table
puteți picătură/șterge un tabel folosind meniul DROP declarație., Sintaxa instrucțiunii DROP este următoarea:
drop table table_name
pentru a arunca un tabel, tabelul ar trebui să existe în baza de date. Prin urmare, este recomandat să utilizați „dacă există” cu picătură declarație, după cum urmează:
drop table if exists table_name
De exemplu,
SQLite3 excepții
Excepțiile sunt de timp a alerga erori. În programarea Python, toate excepțiile sunt instanțele clasei derivate din BaseException.,
în SQLite3, avem următoarele excepții Python principale:
DatabaseError
orice eroare legată de baza de date ridică DatabaseError.
IntegrityError
IntegrityError este o subclasă de DatabaseError și este ridicată atunci când există o problemă de integritate a datelor. De exemplu, datele străine nu sunt actualizate în toate tabelele, ceea ce duce la inconsecvența datelor.
ProgrammingError
excepția ProgrammingError ridică atunci când există erori de sintaxă sau tabel nu este găsit sau funcția este numit cu numărul greșit de parametri/ argumente.,această excepție este ridicată atunci când operațiunile bazei de date sunt eșuate, de exemplu, deconectarea neobișnuită. Aceasta nu este vina programatorilor.
NotSupportedError
atunci Când utilizați unele metode care nu sunt definite sau sprijinite de date, care va ridica NotSupportedError excepție.
SQLite3 Executemany (Bulk insert)
puteți folosi executemany declarație pentru a insera rânduri multiple la o dată.
luați în considerare următorul cod:
aici am creat un tabel cu două coloane, iar „Date” are patru valori pentru fiecare coloană., Trecem variabila la metoda executemany () împreună cu interogarea.
rețineți că am folosit substituentul pentru a trece valorile.
codul De mai sus va genera următorul rezultat:
Strânsă Legătură
Odată ce ați terminat cu baza dumneavoastră de date, este o bună practică pentru a închide conexiunea. Puteți închide conexiunea utilizând metoda close ().,
Pentru a închide o conexiune, de a utiliza conexiunea de obiect și de apel close() metodă, după cum urmează:
con = sqlite3.connect('mydatabase.db')#program statementscon.close()
SQLite3 datetime
În Python bază de date SQLite3, putem stoca cu ușurință o dată sau de importul datatime module. Următoarele formate sunt cele mai comune formate, puteți utiliza pentru datetime:
YYYY-MM-DDYYYY-MM-DD HH:MMYYYY-MM-DD HH:MM:SSYYYY-MM-DD HH:MM:SS.SSSHH:MMHH:MM:SSHH:MM:SS.SSSnow
Considerăm următorul cod:
În acest cod, am importat datetime module în primul rând, și am creat un tabel numit misiuni cu trei coloane.
tipul de date al celei de-a treia coloane este o dată., Pentru a insera data în coloană, am folosit datetime.întâlnire. În mod similar, putem folosi datetime.e timpul să ne ocupăm de timp.
codul De mai sus va genera următoarea ieșire:
o mare flexibilitate și mobilitate de bază de date SQLite3 face prima alegere pentru orice dezvoltator să-l folosească și nava-l cu orice produs cu care lucrează.puteți utiliza baze de date SQLite3 în proiecte Windows, Linux, Mac OS, Android și iOS datorită portabilității lor minunate. Deci, expediați un fișier cu proiectul dvs. și asta este.sper că veți găsi tutorialul util., Continuă să te întorci.
Vă mulțumim.
Ayesha Tariq este un full stack inginer de software, web developer, și blockchain producător pasionat. Ea are cunoștințe extinse de C / C++, Java, Kotlin, Python, și diverse altele.