i denne tutorial vil vi arbejde med S .lite3-databasen programmatisk ved hjælp af Python.s .lite generelt er en server-mindre database, som du kan bruge inden for næsten alle programmeringssprog, herunder Python. Server-less betyder, at der ikke er behov for at installere en separat server til at arbejde med S .lite, så du kan oprette forbindelse direkte til databasen.
s .lite er en letvægts database, der kan give en relationel database management system med nul-konfiguration, fordi der ikke er behov for at konfigurere eller oprette noget til at bruge det.,
Vi vil bruge S .lite version 3 eller S .lite3, så lad os komme i gang.
Indholdsfortegnelse
Opret Forbindelse
for At bruge SQLite3 i Python, først og fremmest, du bliver nødt til at importere sqlite3-modulet, og derefter oprette en forbindelse objekt, som vil forbinde os til databasen, og vil lade os udføre SQL-sætninger.
Du kan et forbindelsesobjekt ved hjælp af connect () – funktionen:
import sqlite3con = sqlite3.connect('mydatabase.db')
der opretter en ny fil med navnet ‘mydatabase.dB’.,
SQLite3 Markøren
for At udføre SQLite-sætninger i Python, du har brug for en markør objekt. Du kan oprette det ved hjælp af markøren() metode.
s .lite3-markøren er en metode til forbindelsesobjektet. For at udføre SQLite3-sætninger, skal du oprette en forbindelse på først og derefter oprette et objekt af markøren ved hjælp af connection objekt som følger:
con = sqlite3.connect('mydatabase.db')cursorObj = con.cursor()
Nu kan vi bruge markøren objekt til at kalde execute () – metoden til at udføre SQL-forespørgsler.,
Opret Database
Når du opretter en forbindelse med s .lite, oprettes der automatisk en databasefil, hvis den ikke allerede findes. Denne databasefil oprettes på disken; vi kan også oprette en database i RAM ved at bruge :hukommelse: med connect-funktionen. Denne database kaldes in-memory database.overvej koden nedenfor, hvor vi har oprettet en database med et forsøg, undtagen og til sidst blokerer for at håndtere eventuelle undtagelser:
først importerer vi s .lite3-modulet, så definerer vi en funktion s .l_connection., Inde i denne funktion har vi en prøveblok, hvor connect () – funktionen returnerer et forbindelsesobjekt efter etablering af forbindelsen.
så har vi undtagen blok, som i tilfælde af undtagelser udskriver fejlmeddelelsen. Hvis der ikke er fejl, oprettes forbindelsen og viser en meddelelse som følger.
derefter har vi Lukket vores forbindelse i den endelig blok. Det er valgfrit at lukke en forbindelse, men det er en god programmeringspraksis, så du frigør hukommelsen fra ubrugte ressourcer.,
Create Table
for at oprette en tabel I S .lite3 kan du bruge Create Table-forespørgslen i e .ecute () – metoden. Overvej følgende trin:
- Opret et forbindelsesobjekt.
- Opret et markørobjekt fra forbindelsesobjektet.brug markørobjektet til at kalde e .ecute-metoden med create table queryuery som parameter.,
Lad os skabe medarbejdere med følgende attributter:
employees (id, name, salary, department, position, hireDate)
Den kode vil blive som dette:
I ovenstående kode har vi defineret to metoder, er det første man etablerer en forbindelse, og den anden metode, der opretter en markør objektet til at udføre create table-sætning.commit () – metoden gemmer alle de ændringer, vi foretager. I sidste ende kaldes begge metoder.
for at kontrollere, om vores tabel er oprettet, kan du bruge DB-bro .seren til S .lite til at se din tabel. Åbn din mydatabase.,db-fil med programmet, og du bør se din tabel:
Indsæt i Tabellen
for At indsætte data i en tabel, anvender vi INSERT INTO. Overvej følgende linje kode:
cursorObj.execute("INSERT INTO employees VALUES(1, 'John', 700, 'HR', 'Manager', '2017-01-04')")con.commit()
for At kontrollere, om dataene indsættes, skal du klikke på Gennemse Data i DB Browser:
Vi kan også videregive værdier/argumenter til en INSERT-sætningen i execute () – metoden. Du kan bruge spørgsmålstegn (?) som pladsholder for hver værdi., Syntaksen af indsatsen vil være som følgende:
cursorObj.execute('''INSERT INTO employees(id, name, salary, department, position, hireDate) VALUES(?, ?, ?, ?, ?, ?)''', entities)
Hvor enheder, der indeholder værdier for pladsholdere som følger:
entities = (2, 'Andrew', 800, 'IT', 'Tech', '2018-02-06')
hele koden er som følger:
Opdater Tabel
for At opdatere tabellen, skal du blot oprette en forbindelse, så opret en markør objekt ved hjælp af forbindelse og endelig bruge UPDATE-sætning i den execute () – metoden.
Antag, at vi vil opdatere navnet på den medarbejder, hvis id er lig med 2., Til opdatering bruger vi OPDATERINGSERKLÆRINGEN og til den medarbejder, hvis id er lig med 2. Vi vil bruge clausehere-klausulen som en betingelse for at vælge denne medarbejder.
Overvej følgende kode:
Dette vil ændre navn fra Andrew til at Rogers som følger:
Select-sætning
Du kan bruge select-sætning bruges til at vælge data fra en bestemt tabel. Hvis du vil vælge alle kolonner af dataene fra en tabel, kan du bruge asterisk (*)., Syntaksen for dette vil være som følger:
select * from table_name
I S .lite3 udføres SELECT-sætningen i markørobjektets udførelsesmetode., For eksempel, vælg alle kolonner af medarbejdernes tabel, skal du køre følgende kode:
cursorObj.execute('SELECT * FROM employees ')
Hvis du ønsker at vælge et par kolonner fra en tabel, og derefter angive de kolonner, som følgende:
select column1, column2 from tables_name
For eksempel,
cursorObj.execute('SELECT id, name FROM employees')
select-sætning, vælger de nødvendige data fra database tabellen, og hvis du ønsker at hente udvalgte data, fetchall () – metoden for markøren objekt bruges. Vi vil demonstrere dette i næste afsnit.,
Hent alle data
for at hente dataene fra en database udfører vi SELECT-sætningen og bruger derefter fetchall () – metoden for markørobjektet til at gemme værdierne i en variabel. Derefter vil vi gennemløbe variablen og udskrive alle værdier.
Den kode vil blive som dette:
ovenstående kode vil udskrive poster i vores database som følger:
Du kan også bruge fetchall() i én linje, som følger:
Hvis du ønsker at hente bestemte data fra databasen, kan du bruge WHERE., For eksempel ønsker vi at hente id ‘ er og navne på de ansatte, hvis løn er større end 800. Lad os udfylde vores bord med flere rækker og derefter udføre vores forespørgsel.
Du kan bruge Indsæt-sætningen til at udfylde dataene, eller du kan indtaste dem manuelt i DB-bro .serprogrammet.
nu, for at hente id og navne på dem, der har en løn større end 800:
i ovenstående SELECT-erklæring, i stedet for at bruge asterisk ( * ), specificerede vi id-og navneattributterne., Resultatet vil være som følgende:
SQLite3 rowcount
SQLite3 rowcount bruges til at returnere antallet af rækker, der er påvirket eller valgt af den nyeste udføres SQL-forespørgsel.
Når vi bruger ro .count med SELECT-sætningen, returneres -1, da hvor mange rækker der vælges, er ukendt, indtil de alle er hentet., Overvej eksemplet nedenfor:
print(cursorObj.execute('SELECT * FROM employees').rowcount)
Derfor, for at få den række, der tæller, er du nødt til at hente alle data, og derefter få længden af resultatet:
rows = cursorObj.fetchall()print len (rows)
Når du bruger DELETE-sætning, uden nogen betingelse (et where), der vil slette alle rækkerne i tabellen, og det vil returnere det samlede antal slettede rækker i rowcount.
print(cursorObj.execute('DELETE FROM employees').rowcount)
Hvis ingen række slettes, returnerer den nul.,
Listen tabeller
en liste over alle tabeller i en SQLite3-database, du skal søge i den sqlite_master tabel og derefter bruge fetchall() til at hente resultaterne fra SELECT-sætning.
s .lite_master er master tabellen i s .lite3, som gemmer alle tabeller.
Dette viser alle tabellerne som følger:
Kontroller, om der findes en tabel eller ej
Når du opretter en tabel, skal vi sørge for, at tabellen ikke allerede findes. På samme måde skal tabellen eksistere, når du fjerner/ sletter en tabel.,s” med DROP TABLE-sætning som følger:
drop table if exists table_name
For eksempel:
cursorObj.execute('drop table if exists projects')
Vi kan også se, hvis den tabel vi ønsker at få adgang eksisterer eller ej, ved at køre følgende forespørgsel:
cursorObj.execute('SELECT name from sqlite_master WHERE type = "table" AND name = "employees"')print(cursorObj.fetchall())
Hvis medarbejdernes tabel eksisterer, vil det vende tilbage til dens navn som følger:
Hvis tabellen navn vi angivet, eksisterer ikke, en tom matrix vil blive returneret:
Drop table
Du kan sætte/slette en tabel ved hjælp af DROP-sætning., Syntaksen for DROP-sætningen er som følger:
drop table table_name
for at droppe en tabel skal tabellen findes i databasen. Derfor, det anbefales at bruge “, hvis der findes” med drop resultatopgørelsen som følger:
drop table if exists table_name
For eksempel:
SQLite3 undtagelser
Undtagelser er run time fejl. I Python programmering, alle undtagelser er forekomster af klassen stammer fra Basee .ception.,
I S .lite3 har vi følgende vigtigste Python undtagelser:
DatabaseError
enhver fejl relateret til databasen hæver DatabaseError.
IntegrityError
IntegrityError er en underklasse af DatabaseError og hæves, når der er et dataintegritetsproblem. For eksempel opdateres udenlandske data ikke i alle tabeller, hvilket resulterer i inkonsekvensen af dataene.
Programmeringerror
undtagelsen Programmeringerror rejser, når der er syntaksfejl eller tabel ikke findes eller funktion kaldes med det forkerte antal parametre / argumenter.,
OperationalError
denne undtagelse hæves, når databaseoperationerne fejler, for eksempel usædvanlig afbrydelse. Dette er ikke programmørernes skyld.
NotSupportedError
når du bruger nogle metoder, der ikke er defineret eller understøttet af databasen, vil det hæve undtagelsen NotSupportedError.
s .lite3 e .ecutemany (Bulk insert)
Du kan bruge e .ecutemany-sætningen til at indsætte flere rækker på .n gang.
overvej følgende kode:
Her oprettede vi en tabel med to kolonner, og “data” har fire værdier for hver kolonne., Vi sender variablen til eksekveringsmange () metode sammen med forespørgslen.
Bemærk, at vi har brugt pladsholderen til at videregive værdierne.
ovenstående kode vil generere følgende resultat:
Tæt Forbindelse
Når du er færdig med din database, er det en god ide at lukke forbindelsen. Du kan lukke forbindelsen ved hjælp af close () – metoden.,
for At lukke en forbindelse, skal du bruge connection objekt og kalde close() metoden som følger:
con = sqlite3.connect('mydatabase.db')#program statementscon.close()
SQLite3 datetime
I Python-SQLite3-database, vi kan nemt gemme dato eller tid ved at importere datatime modul. Følgende formater er de mest almindelige formater, som du kan bruge til 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
Overvej følgende kode:
I denne kode, vi har importeret datetime første modul, og vi har oprettet en tabel, der hedder opgaver med tre kolonner.
datatypen for den tredje kolonne er en dato., For at indsætte datoen i kolonnen har vi brugt datetime.dato. Tilsvarende, vi kan bruge datetime.tid til at håndtere tid.ovenstående kode genererer følgende output:
den store fleksibilitet og mobilitet i s .lite3-databasen gør det til det første valg for enhver udvikler at bruge den og sende den med ethvert produkt, han arbejder med.
Du kan bruge SQLite3 databaser i Windows, Linux, Mac OS, Android, og iOS-projekter på grund af deres fantastiske portabilitet. Så du sender en fil med dit projekt, og det er det.
Jeg håber du finder vejledningen nyttig., Bliv ved med at komme tilbage.
Tak.
Ayesha Tariq er en fuld stack software ingeniør, web-udvikler, og blokkæden udvikler entusiast. Hun har omfattende viden om C/C++, Java, Kotlin, Python og forskellige andre.