Het doel van deze Python SQLite tutorial is om te laten zien hoe Python database applicaties te ontwikkelen met de SQLite database. U leert hoe u SQLite database operaties uit te voeren vanuit Python.
zoals u allen weet, is SQLite een C-taalbibliotheek die een SQL-database-engine implementeert die relatief snel, serverloos en op zichzelf staand, hoog-betrouwbaar is. SQLite is de meest gebruikte database engine in de testomgeving (refereer naar SQLite Home page)., SQLite is ingebouwd bij de meeste computers en mobiele apparaten en browsers. Python ‘ s officiële sqlite3 module helpt ons om te werken met de SQLite database.
Python sqlite3 module voldoet aan Python Database API specificatie v2.0 (PEP 249). PEP 249 biedt een SQL-interface die is ontworpen om de gelijkenis tussen de Python-modules die worden gebruikt om toegang te krijgen tot databases aan te moedigen en te behouden.,
Deze tutorial richt zich voornamelijk op: –
- verbinden met de SQLite database vanuit Python en het creëren van een SQLite database en tabellen
- volgende, zullen we SQLite Datatypes behandelen en het bijbehorende Python types
- volgende, zullen we leren hoe SQLite CRUD operatie uit te voeren d.w.z.,ieve digitale gegevens in SQLite met behulp van Python
- Vervolgens wordt de dekking van SQLite transactie Afhandeling, het creëren en bellen SQLite functies, en de fout afhandeling technieken te ontwikkelen robuuste python programma ‘ s met SQLite database
- Het laat u ook weten hoe het maken en beheren van een in-memory database en zetten SQLite waarden voor aangepaste Python types
- maak een back-up van SQLite database vanuit Python
Laten we zien elke sectie nu.,
Python SQLite Connection
Deze sectie laat u weten hoe u een SQLite database kunt maken en er verbinding mee kunt maken via python met behulp van de sqlite3 module.
om een verbinding met SQLite tot stand te brengen, moet u de databasenaam opgeven die u wilt verbinden. Als u de naam van het databasebestand opgeeft die al op de schijf staat, zal het er verbinding mee maken. Maar als uw opgegeven SQLite database bestand niet bestaat, SQLite maakt een nieuwe database voor u.,
u moet de volgende stappen volgen om verbinding te maken met SQLite
- gebruik de
connect()
methode van een sqlite3 module en geef de databasenaam door als argument. - Maak een cursor-object met behulp van het verbindingsobject dat wordt geretourneerd door de connect-methode om SQLite-query ‘ s uit te voeren vanuit Python.
- sluit het Cursor-object en het SQLITE-databaseverbindingsobject wanneer het werk is gedaan.
- Catch database exception indien aanwezig tijdens dit verbindingsproces.
het volgende Python programma maakt een nieuw databasebestand aan ” SQLite_Python.,db ” en drukt de SQLite versie details.
je zou de volgende uitvoer moeten krijgen na het verbinden met SQLite vanuit Python.
Database created and Successfully Connected to SQLiteSQLite Database Version is: The SQLite connection is closed
de SQLite-verbindingscode in detail begrijpen
importeren sqlite3
- deze regel importeert de sqlite3 module in ons programma. Met behulp van de klassen en methoden gedefinieerd in de sqlite3 module kunnen we communiceren met de SQLite database.
sqlite3.,connect ()
- Met behulp van de
connect()
methode kunnen we een verbinding maken met de SQLite database. Deze methode retourneert het SQLITE Connection Object. - het verbindingsobject is niet thread-safe. de sqlite3 module staat het delen van verbindingen tussen threads niet toe. Als u nog steeds probeert dit te doen, krijgt u een uitzondering op runtime.
- de
connect()
methode accepteert verschillende argumenten. In ons voorbeeld hebben we het argument databasenaam doorgegeven om verbinding te maken.
cursor = sqliteConnection.,cursor ()
- Met behulp van een verbindingsobject kunnen we een cursor-object maken waarmee we SQLite Commando/queries kunnen uitvoeren via Python.
- we kunnen zoveel cursors maken als we willen van een enkel verbindingsobject. Net als verbindingsobject is dit cursor-object ook niet thread-safe. de sqlite3 module staat het delen van cursors tussen threads niet toe. Als u nog steeds probeert dit te doen, krijgt u een uitzondering op runtime.
hierna hebben we een SQLite query gemaakt om de database versie te krijgen.
cursor.,execute ()
- Met de methode uitvoeren van de cursor kunnen we een database-bewerking of query vanuit Python uitvoeren. De
cursor.execute()
methode neemt een SQLite query als parameter en geeft de resultSet terug, d.w.z. niets anders dan een database rijen. - We kunnen query-resultaat ophalen uit resultSet met behulp van cursor-methoden zoals
- In ons voorbeeld voeren we een
SELECT version();
query uit om de SQLite-versie op te halen.,
try-except-finally block: we plaatsten al onze code in het TRY-except blok om de SQLite database uitzonderingen en fouten die kunnen optreden tijdens dit proces te vangen.
- Met behulp van de
sqlite3.Error
klasse van sqlite3 module, kunnen we elke database fout en uitzondering die kunnen optreden tijdens het werken met SQLite van Python verwerken. - met deze aanpak kunnen we onze applicatie robuust maken. De klasse
sqlite3.Error
helpt ons om de fout in detail te begrijpen. Het retourneert een foutmelding en foutcode.
cursor.sluiten () en verbinding.,close ()
- Het is altijd goed om de cursor en het verbindingsobject te sluiten zodra uw werk is voltooid om databaseproblemen te voorkomen.
Create SQLite table from Python
In deze sectie zullen we leren hoe je een tabel in de SQLite database maakt vanuit Python met behulp van de sqlite3 module. Maak een tabel statement is een DDL query laten zien hoe het uit te voeren vanuit Python.
in dit voorbeeld maken we een “sqlitedb_developers” tabel binnen de ” SQLite_Python.db ” database.,
stappen voor het maken van een tabel in SQLite vanuit Python: –
- maak verbinding met SQLite met behulp van een
sqlite3.connect()
. Ik heb de SQLite verbindingscode uitgelegd aan het begin van dit artikel. - Maak een tabelquery aan.
- Voer de query uit met behulp van een
cursor.execute(query)
- sluit uiteindelijk de SQLite-databaseverbinding en het cursor-object.,
uitvoer:
Successfully Connected to SQLiteSQLite table created:the sqlite connection is closed
SQLite-Datatypes en bijbehorende Python-typen
voordat u verder gaat met het uitvoeren van SQLite CRUD-bewerkingen vanuit Python, begrijpt u eerst het SQLITE-gegevenstype en de bijbehorende Python-typen, wat ons zal helpen om gegevens uit de SQLite-tabel op te slaan en te lezen.
SQLite database engine heeft meerdere opslagklassen om waarden op te slaan. Elke waarde die is opgeslagen in een SQLite-database heeft een van de volgende opslagklassen of gegevenstypen.,
SQLite DataTypes:
- NULL: – de waarde is een NULL waarde.
- INTEGER – – om de numerieke waarde op te slaan. Het gehele getal opgeslagen in 1, 2, 3, 4, 6, of 8 bytes afhankelijk van de grootte van het getal.
- REAL: – de waarde is een floating-point waarde, bijvoorbeeld 3.14 waarde van PI
- tekst: – de waarde is een tekstreeks, tekst waarde opgeslagen met behulp van de UTF-8, UTF-16BE of UTF-16LE codering.
- BLOB: – de waarde is een blob van gegevens, d.w.z. binaire gegevens. Het wordt gebruikt om afbeeldingen en bestanden op te slaan.
de volgende Python types zijn zonder problemen geconverteerd naar SQLite., Dus wanneer u het wijzigen of lezen van de SQLite tabel door het uitvoeren van CRUD bewerkingen, onthoud deze 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.,, SQLite invoegen, bijwerken, verwijderen van operaties van Python.
nu kennen we de tabel en zijn kolomdetails dus laten we naar de crud operaties gaan. Ik heb een aparte tutorial gemaakt over elke operatie om het in detail te behandelen. Laat elke sectie nu zien.
- gegevens invoegen in de SQLite-tabel vanuit Python-In deze sectie zullen we leren hoe INSERT commando uit te voeren vanuit python om records in te voegen aan de SQLite-tabel.
- lees de gegevens van SQLite Table uit Python – In dit artikel zullen we leren hoe SQLite SELECT query uit te voeren vanuit een Python-toepassing om de rijen van de tabel op te halen., Ook zal ik u laten weten hoe u
fetchall()
,fetchmany()
, enfetchone()
methoden van een cursor klasse gebruikt om beperkte rijen uit de tabel op te halen om de prestaties te verbeteren. - Update data van SQLite table van Python-In deze sectie zullen we leren hoe we de update query van python kunnen uitvoeren om records van de SQLite tabel te wijzigen.
- gegevens uit de SQLite-tabel uit Python verwijderen-In deze sectie zullen we leren hoe we de verwijderquery uit python kunnen uitvoeren om records uit de SQLite-tabel te verwijderen.,
SQL-bestand (scripts) uitvoeren met behulp van de executescript-functie van de cursor
SQLite-scripts zijn handig voor het grootste deel van de dagelijkse taak. SQLite script is een set van SQL commando ‘ s opgeslagen als een bestand (in .sql-formaat).
Een SQLite-script bevat een of meer SQL-bewerkingen die u vervolgens zult uitvoeren vanaf de opdrachtregelprompt wanneer dat nodig is.
hieronder staan de enkele veelvoorkomende scenario ‘ s waarin we SQLite-scripts
- kunnen gebruiken om meerdere Databases tegelijk te Back-uppen.
- vergelijk Rijtellingen in tabellen uit twee verschillende Databases met hetzelfde Schema.,
- Bewaar al uw CREATE TABLE SQL commando ‘ s in een database script. U kunt dus databaseschema maken op elke server.
u kunt uw script uitvoeren vanaf de opdrachtregel SQLite met behulp van de .read commando, zoals dit:
sqlite> .read mySQLiteScript.sql
voor dit voorbeeld heb ik een voorbeeld SQLite script gemaakt dat twee tabellen zal aanmaken. Dit is het script dat ik heb gemaakt.
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);
laten we nu eens kijken hoe een SQLite script uit te voeren vanuit Python.
uitvoer: SQLite-tabellen gemaakt door het uitvoeren van een SQL-script vanuit Python.,
Successfully Connected to SQLiteSQLite script executed successfullysqlite connection is closed
opmerking: na het verbinden met SQLite lezen we alle inhoud van een SQLite-scriptbestand dat op de schijf is opgeslagen en kopieerden het naar een Python-stringvariabele. Daarna noemden we cursor.executscript(script)
methode om alle SQL statements in één aanroep uit te voeren.
invoegen / ophalen van digitale gegevens in SQLite met behulp van Python
- In deze sectie zal ik u laten weten hoe u digitale informatie zoals een bestand, afbeelding, video of een nummer als BLOB-gegevens in de SQLite-tabel van python kunt invoegen of opslaan.,
- leer ook hoe we een bestand, afbeelding, video, lied, of andere digitale gegevens die zijn opgeslagen in SQLite kunnen lezen met behulp van Python.
raadpleeg onze volledige gids over Python SQLite BLOB om bestanden en afbeeldingen in te voegen en op te halen.
SQLite-functies maken of herdefiniëren met behulp van Python
Python sqlite3 module biedt ons de mogelijkheid om SQL-functies te maken en opnieuw te definiëren vanuit Python. Ik heb een aparte tutorial gemaakt om het in detail te behandelen. Raadpleeg het maken en herdefiniëren van SQL-functies vanuit Python.,
raadpleeg onze volledige gids over het maken of herdefiniëren van SQLite functies vanuit Python.
werken met SQLite datum en tijdstempel types in Python en vice versa
soms moeten we datum of DateTime waarde invoegen of lezen uit een SQLite tabel. Dus als je werkt met een datum-of tijdstempelwaarden, raadpleeg dan onze aparte tutorial over het werken met SQLite DateTime-waarden in Python.
SQLite Database Exceptions
Exception sqlite3.Waarschuwing
- een subklasse met uitzondering. En je kunt het negeren als je wilt dat het de executie niet stopt.,
Exception sqlite3.Fout
- de basisklasse van de andere uitzonderingen in de sqlite3-module. Het is een subklasse van uitzondering.
Exception sqlite3.DatabaseError
- uitzondering gemaakt voor fouten die gerelateerd zijn aan de database.
voorbeelden: Als u probeert een bestand te openen als een SQLite3 database die geen database is, krijgt u sqlite3.DatabaseError: bestand is versleuteld of is geen database
Exception sqlite3.Integriteiterror
- subklasse van een Databaserror., U krijgt deze uitzondering wanneer de relationele integriteit van de database wordt beïnvloed, bijvoorbeeld, een buitenlandse sleutelcontrole mislukt.
Exception sqlite3.ProgrammingError
- het is ook een subklasse van DatabaseError. Deze uitzondering werd verhoogd vanwege programmeerfouten, bijvoorbeeld het maken van een tabel met dezelfde die al bestaat, syntaxfout in de SQL queries.
Exception sqlite3.OperationalError
- het is ook een subklasse van DatabaseError. Deze fout is niet in onze controle. Deze uitzondering wordt gemaakt voor fouten die verband houden met de werking van de database.,
- voorbeelden: per ongeluk wordt de verbinding verbroken, de server is uitgeschakeld, er treedt een time-out op, de gegevensbron heeft problemen. server down
Exception sqlite3.NotSupportedError
- u krijgt een uitzondering wanneer database API werd gebruikt die niet wordt ondersteund door de database.
- voorbeeld: de methode rollback () aanroepen op een verbinding die de transactie niet ondersteunt. Commit aanroepen na het aanmaken van table Commando.,
dus het zal altijd raadzaam zijn om al uw database operation code in de try block te schrijven, zodat u uitzonderingen kunt vangen in behalve block als die er zijn en de corrigerende maatregelen ertegen kunt nemen.
bijvoorbeeld, laten we proberen om gegevens in te voegen in een tabel die niet bestaat in de SQLite database en Print de volledige uitzondering stack.,
Output:
Change SQLite connection timeout bij het verbinden vanuit Python
het kan het scenario zijn wanneer meerdere verbindingen toegang krijgen tot een SQLite-database, en een van de processen die een wijziging van gegevens in de database uitvoeren, moet de verbinding vergrendelen, d.w.z. de SQLite-database is vergrendeld totdat die transactie is vastgelegd. De timeout parameter die we specificeren tijdens het verbinden met de database bepaalt hoe lang de verbinding moet wachten tot de vergrendeling verdwijnt totdat er een uitzondering wordt gemaakt.,
De standaardwaarde voor de time-outparameter is 5.0 (vijf seconden). U hoeft het niet op te geven tijdens het verbinden, omdat het een standaardwaarde is. dat wil zeggen, wanneer u verbinding maakt met SQLite van Python, en je niet een reactie binnen 5 seconden, uw programma zal een uitzondering te verhogen. Maar als u geconfronteerd wordt met een verbindingstijd probleem en dit wilt verhogen, kunt u dit doen met behulp van een timeout argument van een sqlite3.connect
functie.
laat zien hoe de time-out waarde te veranderen tijdens het verbinden van SQLite vanuit Python.,
Output:
Connected to SQLiteTotal rows are: (2,)The Sqlite connection is closed
Identificeer totale veranderingen sinds de SQLite-databaseverbinding is geopend
voor audit of statistiekdoeleinden als u het aantal databaserijen wilt vinden die zijn gewijzigd, ingevoegd of verwijderd sinds de databaseverbinding is geopend, kunt u de connection.total_changes
methode van een Python sqlite3-module gebruiken.
de connection.total_changes
methode geeft het totale aantal betrokken databaserijen terug. Laat het Python voorbeeld zien om de totale veranderingen te vinden die zijn gedaan sinds de database verbinding werd geopend.,
Output:
Connected to SQLiteTotal Rows affected since the database connection was opened: 3sqlite connection is closed
neem een back-up van SQLite-database vanuit Python
Python sqlite3 module biedt een functie om een back-up van de SQLite-database te maken. Met behulp van een connection.backup()
methode kunt u een back-up maken van de SQLite database.
connection.backup(target, *, pages=0, progress=None, name="main", sleep=0.250)
Deze functie neemt een back-up van de SQLite database, en een kopie zal worden geschreven in het argument doel, dat moet een andere verbinding instantie., Standaard, of wanneer pagina ’s 0 of een negatief geheel getal zijn, wordt de hele database in één stap gekopieerd; anders voert de methode een lus uit die tegelijkertijd naar pagina’ s kopieert.
het argument naam specificeert de database die u wilt kopiëren. Het sleep argument definieert het aantal seconden om te slapen tussen opeenvolgende pogingen om een back-up te maken van de resterende pagina ‘ s van een database. sleep argument kan worden opgegeven als een integer of een floating-point waarde.
laat het voorbeeld zien om een bestaande database naar een andere te kopiëren.,
uitvoer:
opmerking:
- na het verbinden met SQLite, hebben we beide databases geopend met behulp van twee verschillende verbindingen.
- vervolgens voerden we een
connection.backup()
methode uit met behulp van een eerste verbindingsinstantie. Ook hebben we het aantal databasepagina ‘ s gespecificeerd dat in elke iteratie moet worden gekopieerd.
Python SQLite Exercise Project
los onze Python Database programmeren oefening op om database programmeren in Python onder de knie te krijgen.
Leave a Reply