Programování

Základy práce s databází SQLite v Pythonu

Základy práce s databází SQLite v Pythonu

Databáze je jedním z nejužitečnějších a nejoblíbenějších souborů pro ukládání dat; mohou být použity k ukládání jakéhokoli druhu dat, včetně textu, čísel, obrázků, binárních dat, souborů atd. SQLite je systém správy relačních databází založený na jazyku SQL. Jedná se o knihovnu C a poskytuje rozhraní API pro práci s dalšími programovacími jazyky, včetně Pythonu. Nevyžaduje spuštění samostatného procesu serveru podle potřeby ve velkých databázových strojích, jako jsou MySQL a Postgresql.

Je rychlý a lehký a celá databáze je uložena v jediném souboru na disku, díky čemuž je přenosná jako CSV nebo jiné soubory pro ukládání dat. Mnoho aplikací používá SQLite pro interní ukládání dat, zejména v prostředích, jako jsou mobilní zařízení nebo malé aplikace.

Databáze SQLite pro Python

Pojďme se hlouběji ponořit do SQLite pomocí programovacího jazyka pythonu. V tomto tutoriálu se seznámíme s výhodami používání SQLite, základy modulu python sqlite3, vytváření tabulky v databázi, vkládání dat do tabulky, dotazování na data z tabulky a aktualizace dat v tabulce.

Výhody používání SQLite

Hlavní výhody používání SQLite jsou:

SQLite se také používá v Google Chrome k ukládání cookies, uživatelských dat a dalších důležitých dat, včetně uživatelských hesel. Android OS také používá SQLite jako svůj primární databázový stroj pro ukládání dat.

Modul Python SQLite3

Abychom mohli používat SQLite, potřebujeme do našeho systému nainstalovat Python. Pokud ve svém systému již nemáte nainstalovaný Python, můžete si přečíst našeho průvodce krok za krokem, jak nainstalovat Python v Linuxu. Mohli bychom použít SQLite v Pythonu pomocí sqlite3 modul k dispozici ve standardní knihovně Pythonu. Gerhard Häring napsal modul sqlite3; poskytuje rozhraní SQL kompatibilní s DB-API 2.0. Dodává se s předinstalovanou standardní knihovnou Pythonu, takže se nemusíme obávat žádné další instalace.

Vytváření připojení k databázi

Prvním krokem při práci s SQLite v Pythonu je nastavení připojení k databázi. Můžeme to udělat pomocí metody connect () sqlite3 k nastavení připojení. Podívejte se na následující kód jako příklad. Můžete jednoduše zkopírovat kód do IDE nebo textového editoru a spustit jej. Pokud máte problém s výběrem IDE pro Python, můžete si přečíst našeho průvodce srovnáváním nejlepšího IDE pythonu. Doporučuje se přepsat kód znovu ve vašem IDE a pokud chcete kód zkopírovat, zkontrolujte syntaxi s zde přítomným kódem.

# import požadovaných modulů importuje sqlite3 # nastavení spojení s databází conn = sqlite3.připojit ("ukázka.db ") print (" Úspěšně připojeno k databázi ") # uzavření připojení připojení.zavřít()

Výše uvedený program vytvoří spojení s ukázkovým souborem databáze SQLite.db.„V terminálu bude mít následující výstup.

Podívejme se, co se děje ve výše uvedeném kódu. V prvním řádku jsme importovali modul sqlite3, který nám pomůže pracovat s databázemi SQLite v Pythonu.

Na druhém řádku vytvoříme spojení se souborem databáze SQLite s názvem „sample“.db “pomocí připojit() funkce. Funkce connect () přijímá cestu k souboru databáze jako argument. Pokud soubor v dané cestě neexistuje, vytvoří sám nový databázový soubor s daným názvem v dané cestě. Funkce connect () vrátí databázový objekt v našem programu; uložíme vrácený objekt do proměnné s názvem spoj.

Třetí řádek v našem programu je jednoduchý tisk příkaz k zobrazení zprávy o úspěšném připojení. Poslední řádek programu přeruší spojení s databází pomocí zavřít() funkce objektu připojení.

V předchozím příkladu jsme vytvořili databázi na disk, ale můžeme také vytvořit databázi do primární paměti RAM. Díky vytvoření databáze v paměti RAM je její spuštění rychlejší než obvykle. Databáze bude přesto vytvořena dočasně a po ukončení provádění programu ji odstraní z paměti. Můžeme vytvořit databázi v paměti zadáním konkrétního názvu: paměť: jako argument do připojit() funkce. Níže uvedený program slouží jako ilustrace.

import sqlite3 conn = sqlite3.connect (": memory:") print ("\ n [+] Databáze byla úspěšně vytvořena v paměti") conn.zavřít()

Výše uvedený program vytvoří databázi v paměti RAM a můžeme ji použít k provádění téměř všech úkolů, které můžeme dělat s databázemi vytvořenými na disku. Tato metoda je užitečná při vytváření dočasné virtuální databáze z nějakého důvodu.

Kurzor SQLite3

Akurzor objekt je naše rozhraní k databázi, které umožňuje provozování libovolnéhoSQL dotaz v databázi. Abychom mohli provádět jakékoli skripty SQL pomocí sqlite3, musíme vytvořit objekt kurzoru. Chcete-li vytvořit objekt kurzoru, musíme použít kurzor() metoda spojení objekt. Můžeme vytvořit kurzorový objekt naší databáze pomocí následujícího kódu.

# import požadovaných modulů importuje sqlite3 # nastavení připojení k databázi conn = sqlite3.připojit ("ukázka.db ") print (" \ n [+] Úspěšně připojeno k databázi ") cur = conn.cursor () print ("\ n [+] Kurzor byl úspěšně nastaven") cur.zavřít () # uzavření připojení připojení.zavřít()

Když je program spuštěn, výstup bude vidět, jak je znázorněno na následujícím obrázku.

Podívejme se, jak výše uvedený kód funguje. Ve výše uvedeném kódu první, druhý, třetí nastavuje připojení k databázi, jak je znázorněno výše. Ve čtvrtém řádku jsme použili kurzor() metoda objektu připojení k vytvoření objektu kurzoru a uložení vráceného objektu kurzoru do proměnné s názvem „cur“. Pátý řádek je obecný tisk() prohlášení. V šestém řádku jsme zničili kurzorový objekt z paměti pomocí zavřít() metoda objektu kurzoru.

Datové typy SQLite

Než budeme pokračovat, nejprve pochopíme datové typy SQLite. Databázový stroj SQLite má několik tříd úložiště pro ukládání mnoha typů dat, včetně textu, binárních dat, celého čísla atd. Každá hodnota má jeden z následujících datových typů.

Typy dat SQLite:

Porovnání datových typů SQLite a Python

Mnohokrát bude potřeba použít datové typy pythonu k uložení některých dat SQL a provedení některých činností. Abychom to mohli udělat, musíme vědět, které datové typy SQL se vztahují ke kterým datovým typům pythonu.

Následující typy Pythonu jsou poněkud podobné datovým typům SQLite:

Typ Pythonu Typ SQLite
Žádný NULA
int CELÉ ČÍSLO
plovák NEMOVITÝ
str TEXT
bajtů KAPKA

Vytvoření tabulky pomocí SQLite

Chcete-li vytvořit tabulku pomocí SQLite, musíme použít VYTVOŘIT TABULKU příkaz SQL v vykonat() metoda objektu kurzoru. Níže je uvedena základní syntaxe příkazu CREATE TABLE v SQL:

CREATE TABLE název_tabulky (název_sloupce omezení datového typu,… název_sloupce omezení datového typu);

Chcete-li použít výše uvedený příkaz SQLite v Pythonu, musíme spustit níže uvedený ukázkový program. V naší databázi vytvoří tabulku s názvem zaměstnanec.

import sqlite3 conn = sqlite3.připojit ("ukázka.db ") print (" \ n [+] Úspěšně připojeno k databázi ") cur = conn.cursor () print ("\ n [+] Kurzor byl úspěšně nastaven") table = cur.execute ("" "VYTVOŘIT TABULKU zaměstnanec (id INT PRIMÁRNÍ KLÍČ, jméno CHAR (25), plat CHAR (25), datum_připojení DATE);" "") print ("\ n [+] Tabulka byla úspěšně vytvořena") voříšek.zavřít () připojit.zavřít()

Ve výše uvedeném programu jsme vytvořili zaměstnanec tabulka s atributy id, jméno, plat, a datum připojení. Tuto tabulku lze nyní použít pro ukládání dat nebo dotazování na data podle požadavků. V terminálu uvidíte následující výstup.

Ve výše uvedeném kódu jsme použili vykonat() metoda objektu kurzoru ke spuštění příkazu SQL k vytvoření tabulky s danými sloupci.

Vkládání dat do tabulky

Vytvořili jsme tabulku v naší databázi SQLite. Nyní do něj vložíme nějaká data pomocí SQL. Základní syntaxe příkazu INSERT jazyka SQL je:

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

Ve výše uvedené syntaxi je název_tabulky je název tabulky, do které chceme vložit naše data. The column_name_1, column_name_2, jsou názvy sloupců v tabulce. The column_data_1, column_data_2,… jsou data, která chceme vložit do daných sloupců.

Podívejme se na praktickou ukázku pro vložení dat do tabulky. Do naší tabulky s názvem přidáme nějaká data zaměstnanec pomocí SQLite a Pythonu. Spuštěním níže uvedeného kódu vložte některá data do tabulky.

importovat sqlite3 conn = sqlite3.připojit ("ukázka.db ") print (" \ n [+] Úspěšně připojeno k databázi ") cur = conn.cursor () print ("\ n [+] Kurzor byl úspěšně nastaven") cur.execute ("INSERT INTO employee (id, name, plate, joining_date) VALUES (1001, 'David', 50000, '1-08-2019')") cur.execute ("INSERT INTO employee (id, name, plate, joining_date) VALUES (1002, 'Sam', 80000, '3-09-2020')") cur.execute ("INSERT INTO employee (id, name, plate, joining_date) VALUES (1003, 'Roshan', 90000, '8-08-2020')") cur.execute ("INSERT INTO employee (id, name, plate, joining_date) VALUES (1004, 'Kishan', 100000, '9-09-2020')") cur.execute ("INSERT INTO employee (id, name, plate, joining_date) VALUES (1005, 'Ankit', 111000, '10 -05-2019 ')") print ("\ n [+] Data byla úspěšně vložena" ) cur.zavřít () připojit.commit () conn.zavřít()

Výše uvedený kód vloží některá data do souboru zaměstnanec tabulku, kterou jsme vytvořili dříve. Podívejme se, co se děje v kódu. Prvních pět řádků se používá k vytvoření připojení k databázi a nastavení kurzoru. V řádcích od šesti do deseti musíme k vložení dat do tabulky zaměstnanců použít příkaz INSERT jazyka SQL. Musíme použít název sloupců tabulky zaměstnanců v první závorce a data pro sloupce v druhé závorce. Jen musíme použít spáchat() metoda objektu připojení před odpojením od databáze, jinak provedené změny nebudou uloženy do databáze.

Dotazování na data z tabulky

Naučili jsme se, jak vložit data do databáze SQLite, ale potřebujeme také dotazovat se na data z databáze, která budou použita naším programem nebo uživateli. K dotazování na data můžeme použít příkaz SELECT jazyka SQL v rámci metody execute (). Základní syntaxe příkazu SELECT je uvedena níže.

VYBERTE názvy sloupců FROM název_tabulky

The names_names v syntaxi bude název sloupců, které musíme dotazovat. Tyto sloupce musí být v tabulce, jejíž název je uveden místo název_tabulky. Nyní se podívejme, jak bychom mohli použít tuto syntaxi k dotazování na data z naší tabulky zaměstnanců. Spuštěním následujícího kódu zobrazíte ilustraci.

importovat sqlite3 conn = sqlite3.připojit ("ukázka.db ") print (" \ n [+] Úspěšně připojeno k databázi ") cur = conn.cursor () print ("\ n [+] Kurzor byl úspěšně nastaven") cur.execute ("SELECT id, name FROM employee") table = cur.fetchall () pro i v tabulce: print (i) cur.zavřít () připojit.commit () conn.zavřít()

Výstup poskytovaný výše uvedeným programem je uveden níže.

Výše uvedený program provede dotaz na tabulku zaměstnanců pro sloupce id a název. Můžeme shromáždit data, která byla vrácena pomocí fetchall () metoda objektu kurzoru. Vrácená data jsou seznamem pythonu obsahujícím řádky, na které jsme se dotazovali. Chcete-li zobrazit jednotlivé řádky, musíme k opakování seznamu použít smyčku Python for; zde si můžete přečíst více o Pythonu pro smyčku. Nyní se podívejme na několik užitečných věcí, které můžeme provést příkazem SELECT.

Načíst všechna data z tabulky

Někdy je potřeba načíst všechny záznamy z databázové tabulky. Chcete-li získat všechny záznamy pomocí příkazu SELECT jazyka SQL, musíme postupovat podle níže uvedené základní syntaxe:

SELECT * FROM název_tabulky

The * Symbol bude použit k označení všech sloupců a pomocí tohoto můžeme dotazovat všechny sloupce tabulky SQLite. Chcete-li načíst všechny záznamy od zaměstnance tabulky, kterého jsme vytvořili dříve, musíme spustit následující kód.

import sqlite3 conn = sqlite3.připojit ("ukázka.db ") print (" \ n [+] Úspěšně připojeno k databázi ") cur = conn.cursor () print ("\ n [+] Kurzor byl úspěšně nastaven") cur.vykonat ("VYBRAT * FROM zaměstnance") řádky = cur.fetchall () print ("\ n [+] Dotazování na data \ n") pro i v řádcích: print (i) cur.zavřít () připojit.commit () conn.zavřít()

Výše uvedený kód zobrazí všechny záznamy přítomné v tabulce zaměstnanců, kterou jsme dříve vytvořili. Výstupem programu bude něco takového:

Údaje o dotazech ve specifickém pořadí

Někdy potřebujeme dotazovat se na data z tabulky v určitém pořadí, například vzestupně nebo sestupně. K zobrazení dat v pořádku můžeme použít příkaz SELECT s klíčovým slovem ORDER BY. Základní syntaxe klíčového slova ORDER BY v příkazu SELECT je:

VYBERTE sloupce_název FROM název_tabulky OBJEDNÁNÍ podle sloupců_název

Podívejme se, jak můžeme použít klíčové slovo ORDER BY k zobrazení dat z pořadí tabulky zaměstnanců podle názvu.

importovat sqlite3 conn = sqlite3.připojit ("ukázka.db ") print (" \ n [+] Úspěšně připojeno k databázi ") cur = conn.cursor () print ("\ n [+] Kurzor byl úspěšně nastaven") cur.execute ("SELECT * FROM employee ORDER BY name") table = cur.fetchall () pro i v tabulce: print (i) cur.zavřít () připojit.commit () conn.zavřít()

Můžete vidět výstup výše uvedeného kódu, jak je uvedeno níže.

Ve výstupu si můžete všimnout, že data byla zobrazena ve vzestupném pořadí sloupce název.

Aktualizace záznamů v tabulce

Existuje mnoho situací, kdy chceme aktualizovat tabulku našich databází. Pokud například používáme databázi pro školní aplikaci, budeme muset aktualizovat data, pokud student přestoupil do nového města. Můžeme rychle aktualizovat řádek libovolné tabulky naší databáze pomocí AKTUALIZACE příkaz SQL v metodě execute (). Jako podmínku pro výběr zaměstnance budeme muset použít klauzuli WHERE jazyka SQL. Základní syntaxe souboru AKTUALIZACE prohlášení je uvedeno níže.

UPDATE table_name SET update_required WHERE Some_condition

Níže uvedený příklad je ilustrací příkazu UPDATE.

import sqlite3 conn = sqlite3.připojit ("ukázka.db ") print (" \ n [+] Úspěšně připojeno k databázi ") cur = conn.cursor () print ("\ n [+] Kurzor byl úspěšně nastaven") print ("\ n [+] Data před aktualizací \ n") cur.vykonat ("VYBRAT * OD zaměstnance") před = cur.fetchall () pro i in before: print (i) cur.spustit ("UPDATE zaměstnanec SET name = 'Aditya' kde name = 'Sam'") print ("\ n [+] Data po aktualizaci \ n") cur.execute ("SELECT * FROM employee") after = cur.fetchall () for i in after: print (i) cur.zavřít () připojit.commit () conn.zavřít()

Výše uvedený program aktualizuje zaměstnance tabulky. Nahrazuje název Sam se jménem Aditya kdekoli se objeví v tabulce. Výstup programu naleznete na následujícím obrázku.

Závěr

To je náš komplexní průvodce pro provádění některých základních úkolů souvisejících s databází SQLite pomocí Pythonu. V nadcházejícím tutoriálu uvidíme několik pokročilejších zvyklostí, které by vás měly dostat na další úroveň výuky databáze SQLite pro Python. Zůstaňte naladěni na FOSSLinux.

Hry Jak nainstalovat a hrát Doom na Linuxu
Jak nainstalovat a hrát Doom na Linuxu
Úvod do Doom Série Doom vznikla v 90. letech po vydání původního Doomu. Byl to okamžitý hit a od té doby herní série získala řadu ocenění a původní Do...
Hry Vulkan pro uživatele Linuxu
Vulkan pro uživatele Linuxu
S každou novou generací grafických karet vidíme, že vývojáři her posouvají hranice grafické věrnosti a přibližují se k fotorealismu. Ale navzdory vešk...
Hry OpenTTD vs Simutrans
OpenTTD vs Simutrans
Vytvoření vlastní simulace dopravy může být zábavné, uvolňující a mimořádně lákavé. Proto se musíte ujistit, že vyzkoušíte co nejvíce her, abyste našl...