I denne opplæringen vil vi arbeide med SQLite3 database programmatisk ved hjelp av Python.
SQLite generelt er en server-mindre database som du kan bruke i nesten alle programmeringsspråk, inkludert Python. Server-mindre betyr at det ikke trenger å installere en egen server til å arbeide med SQLite, slik at du kan koble direkte med databasen.
SQLite er en lett-databasen som kan gi en relasjonell database management system med null-konfigurasjon fordi det er ikke nødvendig å konfigurere og sette opp noe for å bruke det.,
Vi vil bruke SQLite versjon 3 eller SQLite3, så la oss komme i gang.
Innholdsfortegnelse
Opprett Tilkobling
for Å bruke SQLite3 i Python, først av alt, du er nødt til å importere sqlite3 modul og deretter opprette en forbindelse objekt som vil koble oss til database og vil la oss kjøre SQL-setninger.
Du kan forbindelse objekt ved hjelp av connect () – funksjonen:
import sqlite3con = sqlite3.connect('mydatabase.db')
Som vil opprette en ny fil med navnet » mydatabase.dB’.,
SQLite3 Markøren
for Å utføre SQLite uttalelser i Python, trenger du en markøren til objektet. Du kan opprette den ved hjelp av markøren () – metoden.
SQLite3 markøren er en metode for tilkobling objekt. For å utføre SQLite3 uttalelser, bør du opprette en tilkobling på først, og deretter oppretter et objekt av markøren ved hjelp av tilkobling objekt som følger:
con = sqlite3.connect('mydatabase.db')cursorObj = con.cursor()
Nå kan vi bruke markøren objekt for å ringe execute() metode for å utføre noen SQL-spørringer.,
Opprett Database
Når du oppretter en forbindelse med SQLite, som vil opprette en database fil automatisk hvis det ikke allerede eksisterer. Denne databasen er opprettet på disken, og vi kan også opprette en database i RAM-minnet ved hjelp av :minne: med koble til-funksjonen. Denne databasen er kalt in-memory database.
Tenk koden nedenfor der vi har opprettet en database med en prøve, med mindre og til slutt blokker for å håndtere eventuelle unntak:
for det Første, vi importerer sqlite3 modul, så vi definere en funksjon sql_connection., Inne i denne funksjonen, må vi ha en prøve blokk der connect () – funksjonen returnerer en tilkobling objektet etter å opprette forbindelsen.
Så har vi, bortsett fra blokken, som i tilfelle av eventuelle unntak skriver ut feilmelding. Hvis det er noen feil, den forbindelse vil det bli etablert og vil vise en melding som følger.
Etter at vi har avsluttet vår forbindelse i endelig blokk. Avslutte en tilkobling er valgfritt, men det er en god programmering praksis, slik at du frigjøre minne fra ubrukte ressurser.,
Create Table
for Å opprette en tabell i SQLite3, kan du bruke Lag Tabell-spørring i execute () – metoden. Vurder følgende fremgangsmåte:
- Opprette en tilkobling objekt.
- Fra den forbindelse objekt, opprette en markøren til objektet.
- ved Hjelp av markøren objekt, ring utføre metoden med å lage tabell-spørring som parameter.,
La oss lage ansatte med følgende egenskaper:
employees (id, name, salary, department, position, hireDate)
– koden skal være som dette:
I koden ovenfor, har vi definert to metoder, den første etablerer en forbindelse, og den andre metoden skaper en markøren til objektet for å utføre create table statement.
commit () – metoden lagrer alle endringer som vi gjør. I slutten, begge metodene blir kalt.
for Å sjekke om våre tabellen er opprettet, kan du bruke DB nettleser for SQLite for å vise tabellen. Åpne din mydatabase.,db-fil med programmet, og du skal se tabell:
Sett inn i Tabellen
for Å sette inn data i en tabell, bruker vi SETTE INN i uttrykket. Vurdere følgende kode:
cursorObj.execute("INSERT INTO employees VALUES(1, 'John', 700, 'HR', 'Manager', '2017-01-04')")con.commit()
for Å sjekke om dataene er satt inn, klikker du på Bla gjennom Dataene i DB Nettleser:
Vi kan også formidle verdier/argumenter til et SETT utsagn i execute () – metoden. Du kan bruke spørsmålstegn (?) som en plassholder for hver verdi., Syntaksen av innsatsen vil være som følgende:
cursorObj.execute('''INSERT INTO employees(id, name, salary, department, position, hireDate) VALUES(?, ?, ?, ?, ?, ?)''', entities)
Hvor enheter som inneholder verdiene for plassholdere som følger:
entities = (2, 'Andrew', 800, 'IT', 'Tech', '2018-02-06')
hele koden er som følger:
Oppdater Tabell
for Å oppdatere tabellen, kan du ganske enkelt opprette en tilkobling, og deretter opprette en markøren til objektet ved å bruke tilkoblingen og til slutt bruke UPDATE-setningen i execute () – metoden.
la oss si at vi ønsker å oppdatere navnet på den ansatte som har id-er lik 2., For å oppdatere, vil vi bruke UPDATE-setningen og for den ansatte som har id-er lik 2. Vi vil bruke den HVOR klausulen som en betingelse for å velge denne ansatte.
bør du Vurdere følgende kode:
Dette vil endre navnet fra å Andrew Rogers som følger:
Select-uttrykk
Du kan bruke select-setning for å velge data fra en bestemt tabell. Hvis du ønsker å velge alle kolonner med data fra en tabell, som du kan bruke stjerne (*)., Syntaksen for dette vil være som følger:
select * from table_name
I SQLite3, SELECT-setningen utføres i execute-metode for markøren objekt., For eksempel, velg alle kolonnene av de ansatte » – tabellen, kan du kjøre følgende kode:
cursorObj.execute('SELECT * FROM employees ')
Hvis du ønsker å velge et par kolonner fra en tabell, og deretter angi hvilke kolonner som følgende:
select column1, column2 from tables_name
For eksempel,
cursorObj.execute('SELECT id, name FROM employees')
velg uttalelse velger de nødvendige data fra databasen tabellen, og hvis du ønsker å hente den valgte data, fetchall () – metoden til markøren til objektet brukes. Vi vil vise dette i neste avsnitt.,
Hente alle data
for Å hente data fra en database, vil vi utføre SELECT-setning, og deretter vil bruke fetchall () – metoden for markøren objekt for å lagre verdiene til en variabel. Etter det, vil vi gå gjennom de variable og skrive ut alle verdier.
– koden skal være som dette:
koden ovenfor vil skrive ut oppføringer i vår database som følger:
Du kan også bruke fetchall() i en linje som følger:
Hvis du ønsker å hente spesifikke data fra databasen, kan du bruke den HVOR klausulen., For eksempel, vi ønsker å hente id og navn på de ansatte som lønn, er større enn 800. For dette, la oss fylle vårt bord med flere rader, og deretter utføre våre spørsmål.
Du kan bruke sett inn-erklæring for å fylle ut data, eller du kan angi dem manuelt i DB nettleser.
Nå, for å hente id og navn på de som har en lønn som er større enn 800:
I den ovenfor SELECT-uttrykk, i stedet for å bruke stjerne (*), vi angitte id-navn og attributter., Resultatet vil være som følgende:
SQLite3 rowcount
SQLite3 rowcount brukes til å returnere antall rader som er berørt eller som er valgt av de siste utføres SQL-spørring.
Når vi bruker rowcount med SELECT-setning, -1 vil bli returnert så hvor mange rader som er valgt er ukjent inntil de er alle hentet., Vurdere eksempelet nedenfor:
print(cursorObj.execute('SELECT * FROM employees').rowcount)
Derfor, for å få radnummer, du trenger for å hente alle data, og deretter få den lengden av resultatet:
rows = cursorObj.fetchall()print len (rows)
Når du bruker den SLETT uttalelse uten noen tilstand (en where-setningsdel), som vil slette alle rader i tabellen, og den vil gå tilbake totalt antall slettet rader i rowcount.
print(cursorObj.execute('DELETE FROM employees').rowcount)
Hvis du ikke rad er slettet, vil det gå tilbake til null.,
Liste tabeller
for Å liste alle tabeller i en SQLite3 database, bør du spørre den sqlite_master tabellen, og bruk deretter fetchall() til å hente resultater fra SELECT-setning.
sqlite_master er master bord i SQLite3, som lagrer alle bord.
Dette vil liste alle tabellene som følger:
Sjekk om bord eksisterer eller ikke
Når du oppretter en tabell, vi bør sørge for at tabellen ikke allerede eksisterte. På samme måte, når du skal fjerne/ slette en tabell, bordet skal eksistere.,s» med DROP TABLE-setningen som følger:
drop table if exists table_name
For eksempel,
cursorObj.execute('drop table if exists projects')
Vi kan også sjekke om den tabellen vi ønsker å få tilgang eksisterer eller ikke, ved å utføre følgende spørring:
cursorObj.execute('SELECT name from sqlite_master WHERE type = "table" AND name = "employees"')print(cursorObj.fetchall())
Dersom den ansattes tabell eksisterer, vil den gå tilbake sitt navn som følger:
Hvis tabellen navn spesifiserte vi ikke eksisterer, en tom matrise vil bli returnert:
Drop table
Du kan levere/sletter en tabell ved hjelp av DROP uttalelse., Syntaksen for DROP-erklæring er som følger:
drop table table_name
for Å slippe en tabell, bordet skal finnes i databasen. Derfor er det anbefalt å bruke «hvis det finnes» med drop uttalelse som følger:
drop table if exists table_name
For eksempel,
SQLite3 unntak
Unntakene er kjøretidsfeil. I Python-programmering, alle unntakene er tilfeller av klasse avledet fra BaseException.,
I SQLite3, vi har følgende hoved-Python unntak:
DatabaseError
feil relatert til databasen reiser DatabaseError.
IntegrityError
IntegrityError er en underklassen av DatabaseError og er hevet når det er en data integritet problemet. For eksempel utenlandske data er ikke oppdatert i alle tabeller som resulterer i inkonsekvens i dataene.
ProgrammingError
unntak ProgrammingError reiser når det er syntaks feil eller tabellen er ikke funnet eller funksjon som er kalt med feil antall parametre/ argumenter.,
OperationalError
Dette unntaket er hevet når database operasjoner er mislykket, for eksempel, uvanlig frakobling. Dette er ikke feil av de programmerere.
NotSupportedError
Når du bruker noen metoder som ikke er definert, eller støttes av databasen, som vil heve NotSupportedError unntak.
SQLite3 Executemany (Bulk sett)
Du kan bruke executemany uttalelse for å sette inn flere rader på en gang.
bør du Vurdere følgende kode:
Her har vi laget en tabell med to kolonner, og «data» har fire verdier for hver kolonne., Vi passerer den variable til executemany () – metoden sammen med spørringen.
Merk at vi har brukt plassholder for å sende verdiene.
koden ovenfor vil generere følgende resultat:
Nær Forbindelse
Når du er ferdig med din database, og det er en god praksis å lukke tilkoblingen. Du kan lukke tilkoblingen ved hjelp av den lukk () – metoden.,
for Å avslutte en tilkobling, kan du bruke forbindelse objekt og samtale lukk () – metoden som følger:
con = sqlite3.connect('mydatabase.db')#program statementscon.close()
SQLite3 datetime
I Python-SQLite3 database, kan vi lett lagre datoen eller klokkeslettet ved å importere datatime modul. Følgende formater er de vanligste formatene du kan bruke for 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
bør du Vurdere følgende kode:
I denne koden, som vi har importert den datetime modul første, og vi har laget en tabell som heter oppdrag med tre kolonner.
data skriv inn av den tredje kolonnen er en dato., For å sette inn dato i kolonnen, vi har brukt datetime.dato. På samme måte kan vi bruke datetime.tid til å håndtere tid.
koden ovenfor vil generere følgende resultat:
stor fleksibilitet og mobilitet av SQLite3 database gjøre det første valget for enhver utvikler til å bruke den og sende den med ethvert produkt som han jobber med.
Du kan bruke SQLite3 databaser i Windows, Linux, Mac OS, Android og iOS-prosjekter på grunn av sin fantastiske portabilitet. Så du sender en fil med prosjektet, og det er det.
jeg håper du finner opplæringen nyttig., Kommer tilbake.
Takk skal du ha.
Ayesha Tariq er en full stack software engineer, web developer og blockchain utvikler entusiast. Hun har omfattende kunnskap om C/C++, Java, Kotlin, Python, og diverse andre.