formålet med denne Python-SQLite-tutorial er at vise, hvordan man kan udvikle Python database applikationer med SQLite-database. Du vil lære at udføre s .lite database operationer fra Python.
som du alle ved, er S .lite et c-sprogbibliotek, der implementerer en s .l-databasemotor, der er relativt hurtig, serverløs og selvstændig, høj pålidelig. S .lite er den mest almindeligt anvendte database motor i testmiljøet (se s .lite hjemmeside)., S .lite leveres indbygget med de fleste computere og mobile enheder og bro .sere. Pythons officielle s .lite3-modul hjælper os med at arbejde med S .lite-databasen.
Python s .lite3 modul overholder Python Database API specifikation v2.0 (pep 249). PEP 249 giver en s .l-grænseflade, der er designet til at tilskynde og opretholde ligheden mellem Python-modulerne, der bruges til at få adgang til databaser.,
Denne tutorial primært fokuserer på: –
- Tilslutning til SQLite-database fra Python og Skabe en SQLite-database og tabeller
- Næste, vi vil dække SQLite-Datatyper og det er tilsvarende Python typer
- Næste, vi vil lære, hvordan du udfører SQLite CRUD drift, dvs,ieve digitale data i SQLite ved hjælp af Python
- Næste, det vil dække SQLite transaktion Håndtere, skabe og ringer til SQLite-funktioner, og fejl-håndtering teknikker til at udvikle robuste python-programmer med SQLite-database
- Det vil også lade dig vide, hvordan du opretter og administrerer en in-memory-database og konvertere SQLite-værdier til brugerdefineret Python typer
- Tag en backup af SQLite-database fra Python
Lad se, at hver afdeling nu.,
Python s .lite-forbindelse
dette afsnit lader dig vide, hvordan du opretter en s .lite-database og opretter forbindelse til den via python ved hjælp af S .lite3-modulet.
for at oprette en forbindelse til S .lite skal du angive det databasenavn, du vil oprette forbindelse til. Hvis du angiver databasefilnavnet, der allerede findes på disken, vil det oprette forbindelse til det. Men hvis din angivne s .lite-databasefil ikke findes, opretter s .lite en ny database til dig.,
Du skal følge følgende trin for at oprette forbindelse til S .lite
- brug
connect()
– metoden i et s .lite3-modul og videregive databasenavnet som et argument. - Opret et markørobjekt ved hjælp af forbindelsesobjektet returneret af connect-metoden til at udføre s .lite-forespørgsler fra Python.
- Luk Markørobjektet og S .lite database connection object, når arbejdet er færdigt.
- Catch database undtagelse, hvis nogen, der kan opstå under denne forbindelse proces.
følgende Python-program opretter en ny databasefil “s .lite_python.,db ” og udskriver s .lite version detaljer.
Du skal få følgende output efter tilslutning til S .lite fra Python.
Database created and Successfully Connected to SQLiteSQLite Database Version is: The SQLite connection is closed
Forstå SQLite forbindelse Koden i detaljer
import-sqlite3
- Denne linje importerer sqlite3-modul i vores program. Ved hjælp af de klasser og metoder, der er defineret i s .lite3-modulet, kan vi kommunikere med S .lite-databasen.
s .lite3.,Opret forbindelse ()
- ved hjælp af
connect()
– metoden kan vi oprette en forbindelse til S .lite-databasen. Denne metode returnerer s .lite-Forbindelsesobjektet. - forbindelsesobjektet er ikke trådsikkert. s .lite3-modulet tillader ikke deling af forbindelser mellem tråde. Hvis du stadig forsøger at gøre det, får du en undtagelse ved kørsel.
-
connect()
metoden accepterer forskellige argumenter. I vores eksempel passerede vi databasenavnargumentet for at oprette forbindelse.
cursor = s .liteconnection.,cursor ()
- ved hjælp af et forbindelsesobjekt kan vi oprette et markørobjekt, der giver os mulighed for at udføre s .lite-kommando/forespørgsler gennem Python.
- Vi kan oprette så mange markører, som vi ønsker fra et enkelt forbindelsesobjekt. Ligesom forbindelsesobjekt er dette markørobjekt heller ikke trådsikker. s .lite3-modulet tillader ikke deling af markører mellem tråde. Hvis du stadig forsøger at gøre det, får du en undtagelse ved kørsel.
efter dette oprettede vi en s .lite-forespørgsel for at få databaseversionen.
markør.,udfør ()
- ved hjælp af markørens eksekveringsmetode kan vi udføre en databaseoperation eller forespørgsel fra Python. Metoden
cursor.execute()
tager en s .lite-forespørgsel som en parameter og returnerer resultatsættet, dvs.intet andet end en database rækker. - Vi kan hente forespørgselsresultat fra resultatsæt ved hjælp af markørmetoder som
- i vores eksempel udfører vi en
SELECT version();
forespørgsel for at hente s .lite-versionen.,
try-e exceptcept-finally block: vi placerede al vores kode i try-e exceptcept block for at fange undtagelser fra S .lite-databasen og fejl, der kan opstå under denne proces.
- ved Brug af
sqlite3.Error
class for sqlite3-modul, vi kan håndtere enhver database fejl og undtagelser, der kan opstå, mens du arbejder med SQLite fra Python. - ved hjælp af denne tilgang kan vi gøre vores applikation robust.
sqlite3.Error
klasse hjælper os med at forstå fejlen i detaljer. Den returnerer en fejlmeddelelse og fejlkode.
markør.luk () og tilslutning.,luk ()
- det er altid god praksis at lukke markøren og forbindelsesobjektet, når dit arbejde er afsluttet for at undgå databaseproblemer.
Opret s .lite-tabel fra Python
i dette afsnit lærer vi, hvordan du opretter en tabel i s .lite-databasen fra Python ved hjælp af S .lite3-modulet. Opret en tabel erklæring er en DDL forespørgsel lad se, hvordan du udfører det fra Python.
i dette eksempel opretter vi et “s .litedb_developers” – bord inde i “s .lite_python.db ” database.,
trin til oprettelse af en tabel I S .lite fra Python: –
- Opret forbindelse til s .lite ved hjælp af en
sqlite3.connect()
. Jeg har forklaret s .lite-forbindelseskoden i starten af denne artikel. - Forbered en Opret tabel forespørgsel.
- Udfør forespørgslen ved hjælp af en
cursor.execute(query)
- i sidste ende skal du lukke s .lite-databaseforbindelsen og markørobjektet.,
Output:
Successfully Connected to SQLiteSQLite table created:the sqlite connection is closed
SQLite-Datatyper og det er tilsvarende Python typer
Før vi går videre på udførelse af SQLite CRUD operationer fra Python først forstå SQLite-data type og deres tilhørende Python-typer, som vil hjælpe os til at gemme og læse data fra SQLite-tabellen.
s .lite database engine har flere lagringsklasser til at gemme værdier. Hver værdi, der er gemt i en s .lite-database, har en af følgende lagringsklasser eller datatyper.,
s .lite datatyper:
- NULL: – værdien er en NULL-værdi.
- heltal: – for at gemme den numeriske værdi. Heltalet gemt i 1, 2, 3, 4, 6, eller 8 bytes afhængigt af størrelsen af tallet.
- REAL: – værdien er en flydende pointværdi, for eksempel 3.14 værdi af PI
- tekst:-værdien er en tekststreng, tekstværdi gemt ved hjælp af UTF – 8, UTF-16BE eller UTF-16LE kodning.
- BLOB: – værdien er en blob af data, dvs. binære data. Det bruges til at gemme billeder og filer.
følgende Python typer konverteret til s .lite uden problemer., Så når du ændrer eller læser fra S .lite-tabellen ved at udføre CRUD-operationer, skal du huske denne tabel.,
Python type | SQLite type |
None | NULL |
int | INTEGER |
float | REAL |
str | TEXT |
bytes | BLOB |
Perform SQLite CRUD Operations from Python
Most of the time, we need to manipulate the SQLite table’s data from Python. To perform these data manipulations, we can execute DML queries i.e.,, S .lite Indsæt, Opdater, Slet operationer fra Python.
nu kender vi tabellen, og det er kolonnedetaljer, så lad os flytte til crud-operationerne. Jeg har oprettet en separat tutorial om hver operation for at dække det i detaljer. Lad se hvert afsnit nu.
- indsæt data i S .lite – tabellen fra Python-i dette afsnit lærer vi, hvordan du udfører Indsæt kommando fra python for at indsætte poster i s .lite-tabellen.
- Læs s .lite Tables data fra Python – i denne artikel lærer vi, hvordan du udfører s .lite SELECT-forespørgsel fra et Python-program for at hente tabellens rækker., Jeg vil også fortælle dig, hvordan du bruger
fetchall()
,fetchmany()
, ogfetchone()
metoder til en markørklasse til at hente begrænsede rækker fra tabellen for at forbedre ydelsen. - Opdater data fra S .lite – tabellen fra Python-i dette afsnit lærer vi, hvordan du udfører OPDATERINGSFORESPØRGSLEN fra python for at ændre poster i s .lite-tabellen.
- Slet data fra S .lite – tabellen fra Python-i dette afsnit lærer vi, hvordan du udfører SLETNINGSFORESPØRGSLEN fra python for at fjerne poster fra S .lite-tabellen.,
Udfør s .l-fil (scripts) ved hjælp af markørens e .ecutescript-funktion
S .lite-scripts er praktiske til det meste af det daglige job. S .lite script er et sæt s .l-kommandoer gemt som en fil (i .s .l-format).
Et s .lite-script indeholder en eller flere S .l-operationer, som du derefter udfører fra din kommandolinjeprompt, når det kræves.
nedenfor er de få almindelige scenarier, hvor vi kan bruge S .lite-scripts
- sikkerhedskopiere flere databaser på .n gang.
- Sammenlign Rækketællinger i tabeller fra to forskellige databaser med det samme skema.,
- hold alle dine CREATE TABLE s .l-kommandoer i et databasescript. Så du kan oprette databaseskema på enhver server.
Du kan udføre dit script fra S .lite kommandolinjen ved hjælp af .Læs kommando, sådan her:
sqlite> .read mySQLiteScript.sql
i dette eksempel har jeg oprettet et eksempel på S .lite-script, der opretter to tabeller. Dette er scriptet, som jeg har oprettet.
CREATE TABLE hardware ( id INTEGER PRIMARY KEY, name TEXT NOT NULL, price REAL NOT NULL);CREATE TABLE software ( id INTEGER PRIMARY KEY, name TEXT NOT NULL, price REAL NOT NULL);
lad os nu se, hvordan du udfører et s .lite-script indefra Python.
Output: s .lite-tabeller oprettet ved at udføre et s .l-script fra Python.,
Successfully Connected to SQLiteSQLite script executed successfullysqlite connection is closed
Bemærk: Efter tilslutning til SQLite, Vi læser alle indholdet af en SQLite-script-fil, der er gemt på disken, og har kopieret det ind i et python-streng-variabel. Så kaldte vi cursor.executscript(script)
metode til at udføre alle s .l-sætninger i et opkald.
Indsæt/Hente digitale data i SQLite ved hjælp af Python
- I dette afsnit, vil jeg lade dig vide, hvordan du indsætter eller gemme den digitale information, såsom en fil, billede, video eller en sang, som en KLAT data i SQLite-tabellen fra python.,
- lær også, hvordan vi kan læse en fil, billede, video, sang eller digitale data, der er gemt i s .lite ved hjælp af Python.
se vores komplette vejledning om Python s .lite BLOB for at indsætte og hente fil og billeder.
Opret eller omdefinere s .lite-funktioner ved hjælp af Python
Python s .lite3-modul giver os mulighed for at oprette og omdefinere s .l-funktioner indefra Python. Jeg har oprettet en separat tutorial til at dække det i detaljer. Se hvordan du opretter og omdefinerer s .l-funktioner indefra Python.,
se vores komplette guide til at oprette eller omdefinere s .lite-funktioner indefra Python.
Arbejde med SQLite-dato og tidsstempel typer i Python og vice-versa
nogle gange er vi nødt til at indsætte eller læs date eller DateTime-værdi fra en SQLite-tabellen. Så hvis du arbejder med en dato eller tidsstempel værdier, så se vores separate tutorial om at arbejde med S .lite DateTime værdier i Python.
s .lite Database undtagelser
undtagelse s .lite3.Advarsel
- en underklasse af undtagelse. Og du kan ignorere det, hvis du vil, at det ikke stopper henrettelsen.,
undtagelse s .lite3.Fejl
- baseklassen for de andre undtagelser i s .lite3-modulet. Det er en underklasse af undtagelse.
undtagelse s .lite3.DatabaseError
- undtagelse rejst for fejl, der er relateret til databasen.eksempler: hvis du forsøger at åbne en fil som en s .lite3-database, der ikke er en databasefil, får du s .lite3.DatabaseError: filen er krypteret eller er ikke en database
undtagelse s .lite3.IntegrityError
- Underklasse af en DatabaseError., Du får denne undtagelse, når databasens relationelle integritet påvirkes, f.eks.
undtagelse s .lite3.ProgrammingError
- det er også en underklasse af DatabaseError. Denne undtagelse rejst på grund af programmeringsfejl, f.at skabe en tabel med det samme, som allerede eksisterer, syntaksfejl i S .l-forespørgsler.
undtagelse s .lite3.OperationalError
- det er også en underklasse af DatabaseError. Denne fejl er ikke under vores kontrol. Denne undtagelse rejst for fejl, der er relateret til databasens drift.,
- eksempler: en utilsigtet afbrydelse, server ned, en timeout opstår, datakilden problemer. server ned
undtagelse s .lite3.NotSupportedError
- du vil få en undtagelse rejst, når database API blev brugt, som ikke understøttes af databasen.eksempel: opkald til rollback () – metoden på en forbindelse, der ikke understøtter transaktionen. Opkald commit efter oprettelse tabel kommando.,
så det vil altid være tilrådeligt at skrive al din databaseoperationskode i prøveblokken, så du kan fange undtagelser i undtagen blok, hvis nogen og tage de korrigerende handlinger imod det.
lad os for eksempel prøve at indsætte data i en tabel, der ikke findes i s .lite-databasen, og udskrive den fulde undtagelsesstabel.,
Output:
Skift SQLite-connection timeout, når der oprettes forbindelse fra i Python
Det kan være den situation, hvor flere forbindelser, få adgang til en SQLite-database, og en af de processer, der udfører nogle data ændring drift på databasen, til At udføre data ændring forbindelse behov for at tage lås dvs, SQLite-database låst, indtil den pågældende transaktion er begået. Timeout-parameteren, vi angiver, mens vi opretter forbindelse til databasen, bestemmer, hvor længe forbindelsen skal vente på, at låsen forsvinder, indtil der rejses en undtagelse.,
standardværdien for timeout-parameteren er 5,0 (fem sekunder). Du behøver ikke at angive det, mens du opretter forbindelse, fordi det er en standardværdi. dvs. når du opretter forbindelse til S .lite fra Python, og du ikke fik et svar inden for 5 sekunder, vil dit program rejse en undtagelse. Men hvis du står over for forbindelse timeout problem og ønskede at øge det, kan du gøre dette ved hjælp af en timeout argument af en sqlite3.connect
funktion.
lad se, hvordan du ændrer timeout-værdien, mens du forbinder s .lite indefra Python.,
Output:
Connected to SQLiteTotal rows are: (2,)The Sqlite connection is closed
Identificere samlede ændringer siden SQLite-database forbindelsen blev åbnet
For revision eller statistik formål, hvis du ønsker at finde de numre af database rækker, der er blevet ændret, der er indsat eller slettet, da forbindelsen til databasen blev åbnet, kan du bruge connection.total_changes
metode til en Python-sqlite3-modul.
connection.total_changes
– metoden returnerer det samlede antal databaserækker, der er blevet påvirket. Lad se Python eksempel for at finde samlede ændringer, der er blevet gjort siden databaseforbindelsen blev åbnet.,
Output:
Connected to SQLiteTotal Rows affected since the database connection was opened: 3sqlite connection is closed
Tag en backup af SQLite-database fra Python
Python-sqlite3 modul indeholder en funktion til at tage en backup af SQLite-database. Ved hjælp af en connection.backup()
metode kan du tage backup af S .lite database.
connection.backup(target, *, pages=0, progress=None, name="main", sleep=0.250)
Denne funktion tager en backup af SQLite-database, og en kopi vil blive skrevet ind i diskussionen mål, at der skal være en anden Forbindelse, f.eks., Som standard, eller når sider enten er 0 eller et negativt heltal, kopieres hele databasen i et enkelt trin; ellers udfører metoden en løkke, der kopierer op til sider ad gangen.
navneargumentet angiver den database, du vil kopiere. Søvnargumentet definerer antallet af sekunder, der skal sove mellem successive forsøg på at sikkerhedskopiere de resterende sider i en database. søvnargument kan angives enten som et heltal eller en flydende pointværdi.
lad se eksemplet for at kopiere en eksisterende database til en anden.,
Output:
Bemærk:
- efter tilslutning til S .lite åbnede vi begge databaserne ved hjælp af to forskellige forbindelser.
- dernæst udførte vi en
connection.backup()
metode ved hjælp af en første forbindelsesinstans. Vi specificerede også antallet af databasesider, der skulle kopieres i hver iteration.
Python s .lite Øvelsesprojekt
løs venligst vores Python Database programmering øvelse at mestre database programmering i Python.
Leave a Reply