Programmeren

Basisprincipes van het werken met de SQLite-database in Python

Basisprincipes van het werken met de SQLite-database in Python

Een database is een van de meest bruikbare en populaire bestanden voor het opslaan van gegevens; ze kunnen worden gebruikt om alle soorten gegevens op te slaan, inclusief tekst, getallen, afbeeldingen, binaire gegevens, bestanden, enz. SQLite is een relationeel databasebeheersysteem gebaseerd op de SQL-taal. Het is een C-bibliotheek en het biedt een API om met andere programmeertalen te werken, waaronder Python. Het vereist geen afzonderlijk serverproces om te worden uitgevoerd in grote database-engines zoals MySQL en Postgresql.

Het is snel en licht van gewicht en de hele database wordt opgeslagen op een enkel schijfbestand, waardoor het draagbaar is, zoals CSV of andere gegevensopslagbestanden. Veel applicaties gebruiken SQLite voor interne gegevensopslag, voornamelijk in omgevingen zoals mobiele apparaten of kleine applicaties.

SQLite-database voor Python

Laten we een diepe duik nemen in SQLite met de programmeertaal Python. In deze zelfstudie leren we de voordelen van het gebruik van SQLite, de basisprincipes van de python sqlite3-module, een tabel in een database maken, gegevens in de tabel invoegen, gegevens uit de tabel opvragen en gegevens van de tabel bijwerken.

Voordelen van het gebruik van SQLite

De belangrijkste voordelen van het gebruik van SQLite zijn:

SQLite wordt ook gebruikt in Google Chrome om de cookies, gebruikersgegevens en andere belangrijke gegevens, waaronder gebruikerswachtwoorden, op te slaan. Het Android-besturingssysteem gebruikt SQLite ook als primaire database-engine om gegevens op te slaan.

Python SQLite3-module

Om SQLite te gebruiken, moeten we Python in ons systeem installeren. Als je Python nog niet op je systeem hebt geïnstalleerd, kun je onze stapsgewijze handleiding raadplegen om Python in Linux te installeren. We zouden SQLite in Python kunnen gebruiken met behulp van de sqlite3 module beschikbaar in de standaardbibliotheek van Python. Gerhard Häring schreef de sqlite3-module; het biedt een SQL-interface die voldoet aan de DB-API 2.0. Het wordt voorgeïnstalleerd met de Python-standaardbibliotheek, dus we hoeven ons geen zorgen te maken over verdere installatie.

Verbinding maken met een database

De eerste stap tijdens het werken met SQLite in Python is het opzetten van een verbinding met een database. We kunnen dit doen door de methode connect() van sqlite3 te gebruiken om een ​​verbinding tot stand te brengen. Kijk naar de volgende code voor een voorbeeld:. U kunt de code eenvoudig naar een IDE of een teksteditor kopiëren en uitvoeren. Als je een probleem hebt met het kiezen van IDE voor Python, kun je onze gids raadplegen over het vergelijken van de beste python IDE. Het wordt aanbevolen om de code opnieuw in uw IDE te schrijven, en als u de code wilt kopiëren, controleer dan de syntaxis met de hier aanwezige code.

# importeer de vereiste modules import sqlite3 # opzetten van de verbinding met database conn = sqlite3.connect("voorbeeld.db") print("Succesvol verbonden met de database") # sluit de verbindingsverbinding.dichtbij()

Het bovenstaande programma zal een verbinding maken met het SQLite-databasebestand “sample.db."Het geeft de volgende uitvoer in de terminal:.

Laten we eens kijken wat er gebeurt in de bovenstaande code. In de eerste regel hebben we de sqlite3-module geïmporteerd, die ons zal helpen om met SQLite-databases in Python te werken.

In de tweede regel maken we een verbinding met een SQLite-databasebestand met de naam “sample.db” met behulp van de aansluiten() functie. De functie connect() accepteert het pad naar het databasebestand als argument. Als het bestand niet bestaat in het opgegeven pad, zal het zelf een nieuw databasebestand maken met de opgegeven naam in dat pad. De functie connect() retourneert een database-object in ons programma; we slaan het geretourneerde object op in een variabele met de naam conn.

De derde regel in ons programma is een simpele afdrukken statement om een ​​bericht over een geslaagde verbinding weer te geven. De laatste regel van het programma verbreekt de verbinding met de database met behulp van de dichtbij() functie van het verbindingsobject.

In het vorige voorbeeld hebben we de database op de schijf gemaakt, maar we kunnen ook een database in het RAM van het primaire geheugen maken. Het maken van een database in het RAM maakt de uitvoering van de database sneller dan normaal. Toch wordt de database tijdelijk gemaakt en als de uitvoering van het programma stopt, wordt de database uit het geheugen verwijderd. We kunnen een database in het geheugen maken door de specifieke naam :memory: als argument op te geven voor de aansluiten() functie. Zie het onderstaande programma ter illustratie.

import sqlite3 conn = sqlite3.connect(":memory:") print("\n [+] Database is succesvol aangemaakt in het geheugen") conn.dichtbij()

Het bovenstaande programma maakt een database in het RAM-geheugen en we kunnen het gebruiken voor het uitvoeren van bijna elke taak die we kunnen doen met databases die op de schijf zijn gemaakt. Deze methode is handig bij het maken van een tijdelijke virtuele database om de een of andere reden.

SQLite3-cursor

EENcursor het object is onze interface naar de database, die het mogelijk maakt om elkeSQL-query op de database. Om SQL-scripts uit te voeren met sqlite3, moeten we een cursorobject maken. Om een ​​cursorobject te maken, moeten we de . gebruiken cursor() methode van de verbinding voorwerp. We kunnen een cursorobject van onze database maken met behulp van de volgende code:.

# importeer de vereiste modules import sqlite3 # opzetten van de verbinding met de database conn = sqlite3.connect("voorbeeld.db") print("\n [+] Met succes verbonden met de database") cur = conn.cursor() print("\n [+] Cursor is succesvol ingesteld") cur.close() # sluit de verbindingsverbinding.dichtbij()

Wanneer het programma wordt uitgevoerd, ziet de uitvoer eruit zoals in de onderstaande afbeelding:.

Laten we eens kijken hoe de bovenstaande code werkt. In de bovenstaande code is de eerste, tweede, derde, het opzetten van een verbinding met de database, zoals eerder getoond. In de vierde regel hebben we de gebruikt cursor() methode van het verbindingsobject om een ​​cursorobject te maken en het geretourneerde cursorobject op te slaan in een variabele met de naam "cur". De vijfde regel is een algemene afdrukken() uitspraak. In de zesde regel hebben we het cursorobject uit het geheugen vernietigd met behulp van de dichtbij() methode van het cursorobject.

SQLite-gegevenstypen

Voordat we verder gaan, laten we eerst de SQLite-gegevenstypen begrijpen understand. SQLite-database-engine heeft verschillende opslagklassen om vele soorten gegevens op te slaan, waaronder tekst, binaire gegevens, Integer, enz. Elke waarde heeft een van de volgende gegevenstypen:.

SQLite-gegevenstypen:

Vergelijking van SQLite- en Python-gegevenstypen

Er zullen veel momenten zijn waarop we python-gegevenstypen moeten gebruiken om sommige SQL-gegevens op te slaan en sommige activiteiten uit te voeren. Om zoiets te doen, moeten we weten welke SQL-gegevenstypen betrekking hebben op welke python-gegevenstypen.

De volgende Python-typen lijken enigszins op de SQLite-gegevenstypen:

Python-type SQLite-type
Geen NUL
int GEHEEL GETAL
vlotter ECHT
str TEKST
bytes BLOB

Een tabel maken met SQLite

Om een ​​tabel te maken met SQLite, moeten we de . gebruiken MAAK TAFEL statement van SQL in de uitvoeren() methode van het cursorobject. De basissyntaxis van de CREATE TABLE-instructie in SQL wordt hieronder weergegeven:

CREATE TABLE table_name( column_name Data_type constraint,... column_name Data_type constraint );

Om de bovenstaande SQLite-instructie in Python te gebruiken, moeten we het onderstaande voorbeeldprogramma uitvoeren:. Het zal een tabel met de naam werknemer in onze database maken.

import sqlite3 conn = sqlite3.connect("voorbeeld.db") print("\n [+] Met succes verbonden met de database") cur = conn.cursor() print("\n [+] Cursor is succesvol ingesteld") table = cur.execute(""" CREATE TABLE werknemer( id INT PRIMARY KEY, naam CHAR(25), salaris CHAR(25), toetredingsdatum DATE ); """) print("\n [+] De tabel is aangemaakt ") cur.close() conn.dichtbij()

In het bovenstaande programma hebben we een werknemer tabel met de attributen ID kaart, naam, salaris, en toetredingsdatum. Deze tabel kan nu worden gebruikt voor het opslaan van gegevens of het opvragen van gegevens volgens de vereisten. U ziet de volgende uitvoer in de terminal:.

In de bovenstaande code hebben we de . gebruikt uitvoeren() methode van het cursorobject om het SQL-commando uit te voeren om een ​​tabel te maken met de gegeven kolommen.

Gegevens in een tabel invoegen

We hebben een tabel gemaakt in onze SQLite-database. Laten we er nu wat gegevens in invoegen met behulp van SQL. De basissyntaxis van de INSERT-instructie van SQL is:

INSERT INTO table_name (columns_name_1, columns_name_2,… ) VALUES (columns_data_1, columns_data_1,… )

In de bovenstaande syntaxis, de tafel naam is de naam van de tabel waarin we onze gegevens willen invoegen. De kolomnaam_1, kolomnaam_2, zijn de namen van de kolommen in de tabel. De column_data_1, column_data_2,… zijn de gegevens die we in de gegeven kolommen willen invoegen?.

Laten we een praktische demo bekijken om gegevens in een tabel in te voegen. We zullen wat gegevens toevoegen aan onze tabel met de naam werknemer SQLite en Python gebruiken. Voer de onderstaande code uit om wat gegevens in de tabel in te voegen:.

import sqlite3 conn = sqlite3.connect("voorbeeld.db") print("\n [+] Met succes verbonden met de database") cur = conn.cursor() print("\n [+] Cursor is succesvol ingesteld") cur.execute("INSERT INTO werknemer (id, naam, salaris, toetredingsdatum) VALUES (1001, 'David', 50000, '1-08-2019')") cur.execute("INSERT INTO werknemer (id, naam, salaris, toetredingsdatum) VALUES (1002, 'Sam', 80000, '3-09-2020')") cur.execute("INSERT INTO werknemer (id, naam, salaris, toetredingsdatum) VALUES (1003, 'Roshan', 90000, '8-08-2020')") cur.execute("INSERT INTO werknemer (id, naam, salaris, toetredingsdatum) VALUES (1004, 'Kishan', 100000, '9-09-2020')") cur.execute("INSERT INTO werknemer (id, naam, salaris, toetredingsdatum) VALUES (1005, 'Ankit', 111000, '10-05-2019')") print("\n [+] De gegevens zijn met succes ingevoerd " ) cur.close() conn.commit() verbind.dichtbij()

De bovenstaande code zal enkele gegevens invoegen in de werknemer tabel die we eerder hebben gemaakt. Laten we eens kijken wat er in de code gebeurt. De eerste vijf regels worden gebruikt om een ​​verbinding met de database te maken en de cursor in te stellen. In de regels van zes tot tien moeten we het INSERT-commando van SQL gebruiken om gegevens in de werknemerstabel in te voegen. We moeten de kolomnaam van de werknemerstabel tussen de eerste haakjes gebruiken en de gegevens voor de kolommen tussen de tweede haakjes. We hoeven alleen de . te gebruiken plegen() methode van het verbindingsobject voordat u de verbinding met de database verbreekt, anders worden de wijzigingen die we hebben aangebracht niet in de database opgeslagen.

Gegevens opvragen uit een tabel

We hebben geleerd hoe we gegevens in een SQLite-database kunnen invoegen, maar we moeten ook gegevens uit de database opvragen die door ons programma of onze gebruikers moeten worden gebruikt. Om gegevens op te vragen, kunnen we de SELECT-instructie van de SQL gebruiken onder de methode execute(). De basissyntaxis van de SELECT-instructie wordt hieronder weergegeven:.

SELECT column_names FROM table_name

De kolommen_namen in de syntaxis staat de naam van de kolommen die we moeten doorzoeken. Deze kolommen moeten aanwezig zijn in de tabel waarvan de naam wordt gegeven in plaats van tafel naam. Laten we nu eens kijken hoe we deze syntaxis kunnen gebruiken om gegevens uit onze werknemerstabel op te vragen. Voer gewoon de volgende code uit om een ​​illustratie te zien:.

import sqlite3 conn = sqlite3.connect("voorbeeld.db") print("\n [+] Met succes verbonden met de database") cur = conn.cursor() print("\n [+] Cursor is succesvol ingesteld") cur.execute ("SELECT id,name FROM werknemer") table = cur.fetchall() voor i in tabel: print(i) cur.close() conn.commit() verbind.dichtbij()

De uitvoer die door het bovenstaande programma wordt geleverd, wordt hieronder weergegeven:.

Het bovenstaande programma zal de werknemerstabel opvragen voor de kolommen ID kaart en naam. We kunnen de gegevens die zijn geretourneerd verzamelen met behulp van de ophalen() methode van het cursorobject. De geretourneerde gegevens zijn een python-lijst met de rijen die we hebben opgevraagd. Om individuele rijen weer te geven, moeten we de Python for-lus gebruiken om de lijst te herhalen; je kunt hier meer lezen over de Python for-lus. Laten we nu enkele nuttige dingen bekijken die we kunnen uitvoeren met de SELECT-instructie.

Haal alle gegevens uit een tabel

Soms is het nodig om alle records uit een databasetabel op te halen. Om alle records te krijgen met behulp van de SELECT-instructie van SQL, moeten we de onderstaande basissyntaxis volgen:

SELECT * FROM tabelnaam

De * symbool wordt gebruikt om alle kolommen aan te duiden, en door dit te gebruiken, kunnen we alle kolommen van een SQLite-tabel opvragen. Om alle records op te halen van de tafelmedewerker die we eerder hebben gemaakt, moeten we de volgende code uitvoeren:.

import sqlite3 conn = sqlite3.connect("voorbeeld.db") print("\n [+] Met succes verbonden met de database") cur = conn.cursor() print("\n [+] Cursor is succesvol ingesteld") cur.execute ("SELECT * FROM werknemer") rijen = cur.fetchall() print("\n [+] Gegevens opvragen \n") voor i in rijen: print(i) cur.close() conn.commit() verbind.dichtbij()

De bovenstaande code geeft alle records weer die aanwezig zijn in de werknemerstabel die we eerder hebben gemaakt. De uitvoer van het programma ziet er ongeveer zo uit:

Gegevens opvragen in specifieke volgorde

Soms moeten we gegevens uit een tabel opvragen in een bepaalde volgorde, zoals Oplopend of Aflopend. We kunnen de SELECT-instructie gebruiken met het ORDER BY-sleutelwoord om gegevens in volgorde weer te geven. De basissyntaxis van het ORDER BY-sleutelwoord in de SELECT-instructie is:

SELECT column_name FROM table_name ORDER BY column_name

Laten we eens kijken hoe we het trefwoord ORDER BY kunnen gebruiken om gegevens uit de werknemerstabel op naam weer te geven.

import sqlite3 conn = sqlite3.connect("voorbeeld.db") print("\n [+] Met succes verbonden met de database") cur = conn.cursor() print("\n [+] Cursor is succesvol ingesteld") cur.execute("SELECT * FROM werknemer ORDER OP naam") table = cur.fetchall() voor i in tabel: print(i) cur.close() conn.commit() verbind.dichtbij()

Mogelijk ziet u de uitvoer van de bovenstaande code, zoals hieronder weergegeven:.

U merkt misschien in de uitvoer dat de gegevens in oplopende volgorde van de kolom zijn weergegeven naam.

Records in een tabel bijwerken

Er zijn veel situaties waarin we de tabel van onze databases willen bijwerken. Als we de database bijvoorbeeld gebruiken voor een schooltoepassing, moeten we de gegevens bijwerken als een student wordt overgeplaatst naar een nieuwe stad. We kunnen snel een rij van elke tabel van onze database bijwerken met behulp van de BIJWERKEN statement van SQL in de methode execute(). We zullen de WHERE-clausule van SQL moeten gebruiken als een voorwaarde om de werknemer te selecteren. De basissyntaxis van de BIJWERKEN verklaring wordt hieronder weergegeven:.

UPDATE tabelnaam SET update_required WHERE Some_condition

Zie het onderstaande voorbeeld als illustratie van de UPDATE-instructie.

import sqlite3 conn = sqlite3.connect("voorbeeld.db") print("\n [+] Met succes verbonden met de database") cur = conn.cursor() print("\n [+] Cursor is succesvol ingesteld") print("\n [+] Gegevens vóór update\n") cur.execute("SELECT * FROM werknemer") before = cur.fetchall() for i in before: print(i) cur.execute("UPDATE werknemer SET naam = 'Aditya' waar naam = 'Sam'") print("\n [+] Gegevens na update\n") cur.execute ("SELECT * FROM werknemer") after = cur.fetchall() voor i in na: print(i) cur.close() conn.commit() verbind.dichtbij()

Het bovenstaande programma zal de tafelmedewerker bijwerken. Het vervangt de naam Sam met de naam Aditya waar het ook voorkomt in de tabel. Zie de onderstaande afbeelding voor de uitvoer van het programma:.

Conclusie

Dat is onze uitgebreide gids voor het uitvoeren van enkele basistaken met betrekking tot SQLite-databases met Python. In de komende zelfstudie zullen we een paar meer geavanceerde toepassingen zien die u naar het volgende niveau van het leren van SQLite-database voor Python zouden moeten brengen. Blijf op de hoogte van FOSSLinux.

Beste spellen om te spelen met handtracking
Oculus Quest introduceerde onlangs het geweldige idee van handtracking zonder controllers. Met een steeds toenemend aantal games en activiteiten die f...
OSD-overlay tonen in Linux-apps en -games op volledig scherm
Het spelen van games op volledig scherm of het gebruik van apps in de modus volledig scherm zonder afleiding kan u afsnijden van relevante systeeminfo...
Top 5 Game Capture-kaarten
We hebben allemaal gezien en genoten van streaming gameplays op YouTube. PewDiePie, Jakesepticye en Markiplier zijn slechts enkele van de beste gamers...