syftet med denna Python SQLite tutorial är att visa hur man utvecklar Python databasprogram med SQLite databas. Du kommer att lära dig att utföra SQLite databasoperationer från Python.
som ni alla vet är SQLite ett C-språkbibliotek som implementerar en SQL – databasmotor som är relativt snabb, serverlös och fristående, hög tillförlitlig. SQLite är den vanligaste databasmotorn i testmiljön (se SQLite hemsida)., SQLite kommer inbyggd med de flesta datorer och mobila enheter och webbläsare. Pythons officiella sqlite3-modul hjälper oss att arbeta med SQLite-databasen.
Python sqlite3 modul följer Python Databas API-Specifikation v2.0 (PEP 249). PEP 249 tillhandahåller ett SQL-gränssnitt som har utformats för att uppmuntra och upprätthålla likheten mellan Python-modulerna som används för att komma åt databaser.,
den här handledningen fokuserar främst på – –
- ansluta till SQLite-databasen från Python och skapa en SQLite-databas och tabeller
- nästa kommer vi att täcka SQLite datatyper och det är motsvarande Python-typer
- nästa kommer vi att lära oss hur man utför SQLite CRUD-operation, dvs.,ieve digitala data i SQLite-med hjälp av Python
- Nästa, kommer det att omfatta SQLite transaktionshantering, skapa och ringer SQLite-funktioner, och felhantering tekniker för att utveckla robusta python-program med SQLite-databas
- Det kommer också att låta dig veta hur du kan skapa och hantera en in-memory database och konvertera SQLite-värden för anpassad Python typer
- Ta en backup av SQLite-databas från inom Python
Låt se alla avsnitt nu.,
Python SQLite-anslutning
det här avsnittet låter dig veta hur du skapar en SQLite-databas och ansluter till den via python med hjälp av sqlite3-modulen.
för att upprätta en anslutning till SQLite måste du ange det databasnamn du vill ansluta till. Om du anger databasfilnamnet som redan presenteras på disken, kommer det att ansluta till det. Men om din angivna SQLite databasfilen inte existerar, skapar SQLite en ny databas för dig.,
Du måste följa följande steg för att ansluta till SQLite
- använd
connect()
– metoden för en sqlite3-modul och skicka databasnamnet som ett argument. - skapa ett markörobjekt med anslutningsobjektet som returneras av anslutningsmetoden för att utföra SQLite-frågor från Python.
- Stäng Markörobjektet och SQLite databasanslutningsobjektet när arbetet är klart.
- Fångstdatabas undantag om något som kan inträffa under denna anslutningsprocess.
följande Python-program skapar en ny databasfil ”SQLite_Python.,db” och skriver SQLite version detaljer.
Du bör få följande utgång efter anslutning till SQLite från Python.
Database created and Successfully Connected to SQLiteSQLite Database Version is: The SQLite connection is closed
förstå SQLite anslutningskoden i detalj
importera sqlite3
- denna linje importerar sqlite3-modulen i vårt program. Med hjälp av de klasser och metoder som definieras i sqlite3-modulen kan vi kommunicera med SQLite-databasen.
sqlite3.,Anslut()
- med
connect()
– metoden kan vi skapa en anslutning till SQLite-databasen. Denna metod returnerar SQLite-Anslutningsobjektet. - anslutningsobjektet är inte trådsäkert. sqlite3-modulen tillåter inte att dela anslutningar mellan trådar. Om du fortfarande försöker göra det får du ett undantag vid körning.
- metoden
connect()
accepterar olika argument. I vårt exempel passerade vi databasnamnsargumentet för att ansluta.
cursor = sqliteConnection.,markör ()
- med hjälp av ett anslutningsobjekt kan vi skapa ett markörobjekt som tillåter oss att utföra SQLite-kommando / – frågor via Python.
- vi kan skapa så många markörer som vi vill ha från ett enda anslutningsobjekt. Liksom anslutningsobjekt är det här markörobjektet inte heller trådsäkert. sqlite3-modulen tillåter inte att dela markörer mellan trådar. Om du fortfarande försöker göra det får du ett undantag vid körning.
Efter detta skapade vi en SQLite-Fråga för att få databasversionen.
markör.,execute ()
- med hjälp av markörens exekveringsmetod kan vi utföra en databasoperation eller Fråga från Python. Metoden
cursor.execute()
tar en SQLite-fråga som en parameter och returnerar resultatset, dvs Ingenting annat än en databasrader. - vi kan hämta frågeresultat från resultatset med hjälp av markörmetoder som
- i vårt exempel kör vi en
SELECT version();
– Fråga för att hämta SQLite-versionen.,
försök-utom-slutligen blockera: vi placerade all vår kod i försök-utom blocket för att fånga SQLite databas undantag och fel som kan uppstå under denna process.
- med hjälp av
sqlite3.Error
klass sqlite3 modul, kan vi hantera alla databasfel och undantag som kan uppstå när du arbetar med SQLite från Python. - med hjälp av detta tillvägagångssätt kan vi göra vår ansökan robust. Klassen
sqlite3.Error
hjälper oss att förstå felet i detalj. Det returnerar ett felmeddelande och felkod.
markör.stäng () och anslutning.,stäng()
- Det är alltid bra att stänga markören och anslutningsobjektet när ditt arbete är klart för att undvika databasproblem.
skapa SQLite-tabell från Python
i det här avsnittet lär vi oss hur du skapar en tabell i SQLite-databasen från Python med hjälp av sqlite3-modulen. Skapa en tabell uttalande är en DDL fråga låt se hur man utför det från Python.
i det här exemplet skapar vi en ”SqliteDb_developers” – tabell inuti ”SQLite_Python.db ” databas.,
steg för att skapa en tabell i SQLite från Python: –
- Anslut till SQLite med en
sqlite3.connect()
. Jag har förklarat SQLite anslutningskoden i början av denna artikel. - Förbered en skapa tabellfråga.
- utför frågan med ett
cursor.execute(query)
- i slutändan stänger du SQLite-databasanslutningen och markörobjektet.,
Output:
Successfully Connected to SQLiteSQLite table created:the sqlite connection is closed
SQLite datatyper och det är motsvarande Python-typer
innan du fortsätter vidare med SQLite CRUD-operationer från Python först förstå SQLite datatyp och deras motsvarande python-typer, vilket hjälper oss att lagra och läsa data från SQLite-tabellen.
SQLite databasmotor har flera lagringsklasser för att lagra värden. Varje värde som lagras i en SQLite databas har en av följande lagringsklasser eller datatyper.,
SQLite datatyper:
- NULL: – värdet är ett NULL-värde.
- heltal: – för att lagra det numeriska värdet. Heltalet lagras i 1, 2, 3, 4, 6, eller 8 byte beroende på storleken på numret.
- REAL: – värdet är ett flyttal, till exempel 3.14 värde för PI
- TEXT: – värdet är en textsträng, textvärde som lagras med UTF-8, UTF-16BE eller UTF-16LE-kodningen.
- BLOB: – värdet är en klump av data, dvs binära data. Det används för att lagra bilder och filer.
följande Python-typer konverterade till SQLite utan problem., Så när du ändrar eller läser från SQLite-tabellen genom att utföra CRUD-operationer, kom ihåg den här tabellen.,
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.,, SQLite infoga, uppdatera, ta bort operationer från Python.
nu känner vi till tabellen, och det är kolumndetaljer så låt oss flytta till crud-operationerna. Jag har skapat en separat handledning om varje operation för att täcka den i detalj. Låt se varje avsnitt nu.
- sätt in data i SQLite – tabellen från Python-i det här avsnittet lär vi oss hur du utför infoga kommando från python för att infoga poster i SQLite-tabellen.
- Läs SQLite tabelldata från Python – i den här artikeln kommer vi att lära oss hur man kör SQLite SELECT query från en Python-applikation för att hämta tabellens rader., Jag kommer också att låta dig veta hur du använder
fetchall()
,fetchmany()
ochfetchone()
metoder för en markörklass för att hämta begränsade rader från tabellen för att förbättra prestanda. - uppdatera data från SQLite-tabellen från Python – i det här avsnittet lär vi oss hur du utför UPPDATERINGSFRÅGAN från python för att ändra poster i SQLite-tabellen.
- ta bort data från SQLite – tabellen från Python-i det här avsnittet lär vi oss hur du kör DELETE-frågan från python för att ta bort poster från SQLite-tabellen.,
Utför SQL-fil (scripts) med hjälp av markörens executescript-funktion
SQLite-skript är praktiska för det mesta av det dagliga jobbet. SQLite script är en uppsättning SQL-kommandon sparas som en fil (i .sql-format).
ett SQLite-skript innehåller en eller flera SQL-operationer som du sedan kör från kommandoradsprompten när det behövs.
nedan är de få vanliga scenarierna där vi kan använda SQLite-skript
- Säkerhetskopiera flera databaser samtidigt.
- jämför Radtal i tabeller från två olika databaser med samma Schema.,
- behåll alla dina Skapa tabell SQL-kommandon i ett databasskript. Så du kan skapa databasschema på vilken server som helst.
Du kan köra ditt skript från SQLite kommandoraden med hjälp av .läs kommandot, så här:
sqlite> .read mySQLiteScript.sql
i det här exemplet har jag skapat ett prov SQLite script som kommer att skapa två tabeller. Detta är det manus som jag har skapat.
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);
låt oss nu se hur man kör ett SQLite-skript inifrån Python.
Output: SQLite tabeller som skapats genom att köra ett SQL-skript från Python.,
Successfully Connected to SQLiteSQLite script executed successfullysqlite connection is closed
Obs: efter anslutning till SQLite läser vi allt innehåll i en SQLite-skriptfil som lagrats på disken och kopierade den till en python-strängvariabel. Sedan kallade vicursor.executscript(script)
metod för att utföra alla SQL-satser i ett samtal.
infoga / hämta digitala data i SQLite med Python
- i det här avsnittet kommer jag att låta dig veta hur du infogar eller sparar någon digital information som en fil, bild, video eller en låt som en BLOB-data i SQLite-tabellen från python.,
- lär dig också hur vi kan läsa en fil, bild, video, sång eller någon digital data som lagras i SQLite med Python.
se vår kompletta guide på Python SQLite BLOB att infoga och Hämta fil och bilder.
skapa eller omdefiniera SQLite funktioner med Python
Python sqlite3 modul ger oss möjlighet att skapa och omdefiniera SQL-funktioner inifrån Python. Jag har skapat en separat handledning för att täcka den i detalj. Se hur du skapar och omdefinierar SQL-funktioner inifrån Python.,
se vår kompletta guide Om skapa eller omdefiniera SQLite funktioner inifrån Python.
arbeta med SQLite datum och tidsstämpeltyper i Python och vice versa
Ibland måste vi infoga eller läsa datum eller DateTime värde från en SQLite tabell. Så om du arbetar med ett datum eller tidsstämpelvärden, vänligen se vår separata handledning om att arbeta med SQLite DateTime-värden i Python.
SQLite databas undantag
undantag sqlite3.Varning
- en underklass av undantag. Och du kan ignorera det om du vill att det inte stoppar avrättningen.,
Undantag sqlite3.Fel
- basklassen för de andra undantagen i sqlite3-modulen. Det är en underklass av undantag.
Undantag sqlite3.DatabaseError
- undantag höjs för fel som är relaterade till databasen.
exempel: om du försöker öppna en fil som en sqlite3-databas som inte är en databasfil får du sqlite3.DatabaseError: filen är krypterad eller är inte en databas
undantag sqlite3.IntegrityError
- underklass i en DatabaseError., Du kommer att få detta undantag när databasens relationella integritet påverkas, t.ex. misslyckas en utländsk nyckelkontroll.
Undantag sqlite3.ProgrammingError
- Det är också en underklass av DatabaseError. Detta undantag höjdes på grund av programmeringsfel, t.ex. skapa en tabell med samma som redan finns, syntaxfel i SQL-frågor.
Undantag sqlite3.OperationalError
- Det är också en underklass av DatabaseError. Detta fel är inte i vår kontroll. Detta undantag höjs för fel som är relaterade till databasens verksamhet.,
- exempel: en oavsiktlig koppling, server ner, en timeout inträffar, datakällans problem. server ner
Undantag sqlite3.NotSupportedError
- du får ett undantag när databas API användes som inte stöds av databasen.
- exempel: anropa återställningsmetoden() på en anslutning som inte stöder transaktionen. Anropar begå efter att skapa tabell kommando.,
så det kommer alltid att vara lämpligt att skriva all din databas operationskod i försök blocket så att du kan fånga undantag i utom block om någon och vidta korrigerande åtgärder mot det.
låt oss till exempel försöka infoga data i en tabell som inte finns i SQLite-databasen och skriva ut hela undantagsstacken.,
utgång:
ändra SQLite anslutning timeout när du ansluter inifrån Python
det kan vara scenariot när flera anslutningar tillgång till en SQLite databas, och en av de processer som utför vissa data modifiering operation på databasen, för att utföra data modifiering anslutning måste ta lås dvs är SQLite databasen låst tills transaktionen har begåtts. Parametern timeout som vi anger när du ansluter till databasen bestämmer hur länge anslutningen ska vänta på att låset ska gå bort tills ett undantag höjs.,
standardvärdet för timeout-parametern är 5,0 (fem sekunder). Du behöver inte ange det när du ansluter eftersom det är ett standardvärde. dvs när du ansluter till SQLite från Python, och du inte fick ett svar inom 5 sekunder, kommer ditt program att höja ett undantag. Men om du står inför anslutning timeout fråga och ville öka den, kan du göra detta med hjälp av en timeout argument en sqlite3.connect
funktion.
Låt se hur du ändrar timeout-värdet när du ansluter SQLite inifrån Python.,
utgång:
Connected to SQLiteTotal rows are: (2,)The Sqlite connection is closed
identifiera totala förändringar sedan SQLite databasanslutningen öppnades
för revision eller statistik ändamål om du vill hitta antalet databasrader som har ändrats, infogats eller tagits bort eftersom databasanslutningen öppnades kan du användaconnection.total_changes
metod för en Python sqlite3 modul.
metodenconnection.total_changes
returnerar det totala antalet databasrader som har påverkats. Låt se Python-exemplet för att hitta totala ändringar som har gjorts sedan databasanslutningen öppnades.,
utgång:
Connected to SQLiteTotal Rows affected since the database connection was opened: 3sqlite connection is closed
ta en säkerhetskopia av SQLite databas inifrån Python
Python sqlite3 modul ger en funktion för att ta en säkerhetskopia av SQLite databas. Använda enconnection.backup()
metod du kan ta säkerhetskopian av SQLite databas.
connection.backup(target, *, pages=0, progress=None, name="main", sleep=0.250)
den här funktionen tar en säkerhetskopia av SQLite-databasen, och en kopia kommer att skrivas in i argumentmålet, det måste vara en annan Anslutningsinstans., Som standard, eller när sidor är antingen 0 eller ett negativt heltal, kopieras hela databasen i ett enda steg; annars utför metoden en slinga som kopierar upp till sidor åt gången.
namnargumentet anger den databas som du vill kopiera. Sleep-argumentet definierar antalet sekunder att sova mellan successiva försök att säkerhetskopiera de återstående sidorna i en databas. sleep argument kan anges antingen som ett heltal eller ett flyttal värde.
Låt se exemplet för att kopiera en befintlig databas till en annan.,
utgång:
Obs:
- efter anslutning till SQLite öppnade vi båda databaserna med två olika anslutningar.
- därefter utförde vi en
connection.backup()
– metod med en första anslutningsinstans. Vi angav också antalet databassidor att kopiera i varje iteration.
Python SQLite Exercise Project
vänligen lösa vår Python databas programmering övning att bemästra databas programmering i Python.
Leave a Reply