účelem tohoto Python SQLite tutoriálu je ukázat, jak rozvíjet Python databázové aplikace s SQLite databáze. Dozvíte se, jak provádět operace databáze SQLite z Pythonu.
Jak všichni víte, SQLite je C-jazyk knihovna implementující SQL databázový engine, který je relativně rychlý, serverless a soběstačný, vysoce spolehlivé. SQLite je nejčastěji používaný databázový stroj v testovacím prostředí (viz domovská stránka SQLite)., SQLite přichází vestavěný s většinou počítačů a mobilních zařízení a prohlížečů. Oficiální modul Pythonu sqlite3 nám pomáhá pracovat s databází SQLite.
modul Python sqlite3 dodržuje specifikaci API Python Database V2. 0 (PEP 249). PEP 249 poskytuje rozhraní SQL, které bylo navrženo tak, aby podporovalo a udržovalo podobnost mezi moduly Python, které se používají pro přístup k databázím.,
Tento výukový program se zaměřuje především na: –
- Připojení k SQLite databáze z Pythonu a Vytvoření SQLite databáze a tabulky
- Dále se budeme zabývat SQLite datových typů, a je to odpovídající Python typy
- Příště se budeme učit, jak provádět SQLite CRUD operace, tj.,takový digitální data v SQLite Python
- Další, to se bude týkat SQLite transakční Zpracování, vytváření a volání SQLite funkce, a chyba-manipulační techniky, vyvinout robustní python programy s SQLite databáze
- To bude také vám vědět, jak vytvořit a spravovat databáze v paměti a převést SQLite hodnoty vlastní Python typy
- Vzít zálohu databáze SQLite zevnitř Python
uvidíme, každý bod teď.,
Python SQLite Connection
tato část vám umožní vědět, jak vytvořit databázi SQLite a připojit se k ní přes python pomocí modulu sqlite3.
Chcete-li navázat spojení s SQLite, musíte zadat název databáze, kterou chcete připojit. Pokud zadáte název databázového souboru, který již je na disku uveden, připojí se k němu. Pokud však váš zadaný databázový soubor SQLite neexistuje, SQLite pro vás vytvoří novou databázi.,
pro připojení k SQLite
- použijte metodu
connect()
modulu sqlite3 a předejte název databáze jako argument. - vytvořte objekt kurzoru pomocí objektu připojení vráceného metodou connect k provedení dotazů SQLite z Pythonu.
- Po dokončení práce zavřete objekt kurzoru a objekt připojení k databázi SQLite.
- Catch database výjimka, pokud některý, který může nastat během tohoto procesu připojení.
následující program Python vytvoří nový databázový soubor “ sqlite_python.,db “ a vytiskne podrobnosti o verzi SQLite.
po připojení k SQLite z Pythonu byste měli získat následující výstup.
Database created and Successfully Connected to SQLiteSQLite Database Version is: The SQLite connection is closed
Pochopit SQLite připojení Kód v detailu
import sqlite3
- Tento řádek importuje sqlite3 modul v našem programu. Pomocí tříd a metod definovaných v modulu sqlite3 můžeme komunikovat s databází SQLite.
sqlite3.,připojte ()
- pomocí metody
connect()
můžeme vytvořit připojení k databázi SQLite. Tato metoda vrací objekt připojení SQLite. - objekt připojení není bezpečný pro závit. modul sqlite3 neumožňuje sdílení spojení mezi vlákny. Pokud se o to stále pokoušíte, získáte výjimku za běhu.
- metoda
connect()
přijímá různé argumenty. V našem příkladu jsme předali argument názvu databáze pro připojení.
cursor = sqliteconnection.,kurzor ()
- pomocí objektu připojení můžeme vytvořit objekt kurzoru, který nám umožňuje provádět příkaz/dotazy SQLite přes Python.
- z jediného objektu připojení můžeme vytvořit tolik kurzorů, kolik chceme. Stejně jako objekt připojení není tento objekt kurzoru také bezpečný. modul sqlite3 neumožňuje sdílení kurzorů mezi vlákny. Pokud se o to stále pokoušíte, získáte výjimku za běhu.
poté jsme vytvořili dotaz SQLite, abychom získali verzi databáze.
kurzor.,execute ()
- pomocí metody execute kurzoru můžeme provést operaci databáze nebo dotaz z Pythonu. Metoda
cursor.execute()
bere jako parametr dotaz SQLite a vrací výsledkovou sadu, tj. nic jiného než řádky databáze. - můžeme získat výsledek dotazu z množiny výsledků pomocí kurzoru metody, jako například
- V našem příkladu jsme vykonávajícím
SELECT version();
dotaz pro SQLite verze.,
try-except-finally bloku: Jsme umístili všechny naše kód v try-except blok chytit SQLite databáze výjimky a chyby, které mohou nastat během tohoto procesu.
- pomocí modulu
sqlite3.Error
třídy modulu sqlite3 zvládneme jakoukoli chybu databáze a výjimku, která může nastat při práci s SQLite z Pythonu. - pomocí tohoto přístupu můžeme učinit naši aplikaci robustní. Třída
sqlite3.Error
nám pomáhá podrobně porozumět chybě. Vrací chybovou zprávu a kód chyby.
kurzor.zavřít () a připojení.,zavřít ()
- vždy je dobré zavřít kurzor a objekt připojení, jakmile bude vaše práce dokončena, aby se předešlo problémům s databází.
vytvořte tabulku SQLite z Pythonu
v této části se naučíme, jak vytvořit tabulku v databázi SQLite z Pythonu pomocí modulu sqlite3. Vytvoření příkazu tabulky je dotaz DDL, který umožňuje zjistit, jak jej provést z Pythonu.
v tomto příkladu vytváříme tabulku“ Sqliteedb_developers „uvnitř“ sqlite_python.databáze db.,
kroky pro vytvoření tabulky v SQLite z Pythonu: –
- Připojte se k SQLite pomocí
sqlite3.connect()
. Vysvětlil jsem kód připojení SQLite na začátku tohoto článku. - připravte dotaz na vytvoření tabulky.
- proveďte dotaz pomocí
cursor.execute(query)
- na konci zavřete připojení k databázi SQLite a objekt kurzoru.,
Výstup:
Successfully Connected to SQLiteSQLite table created:the sqlite connection is closed
SQLite datových typů, a je to odpovídající Python typy
Před pokračováním dále na provádění SQLite CRUD operace z Python nejprve pochopit, SQLite typ dat a jejich odpovídající Python typy, což nám pomůže ukládat a číst data z tabulky SQLite.
SQLite database engine má více tříd úložiště pro ukládání hodnot. Každá hodnota uložená v databázi SQLite má jednu z následujících tříd úložiště nebo datových typů.,
SQLite Datypes:
- NULL – – hodnota je nulová hodnota.
- celé číslo: – pro uložení číselné hodnoty. Celé číslo uložené v 1, 2, 3, 4, 6, nebo 8 bajtů v závislosti na velikosti čísla.
- REAL: – hodnota s plovoucí desetinnou čárkou hodnota, například 3.14 hodnota PI
- TEXT: – hodnota je textový řetězec, TEXT, hodnota uložená pomocí UTF-8, UTF-16BE nebo UTF-16LE kódování.
- BLOB – – hodnota je blob dat, tj. Používá se k ukládání obrázků a souborů.
následující typy Pythonu převedené na SQLite bez problémů., Takže když upravujete nebo čtete z tabulky SQLite provedením CRUD operací, nezapomeňte na tuto tabulku.,
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 vložit, aktualizovat, odstranit operace z Pythonu.
nyní známe tabulku a jsou to detaily sloupců, takže se přesuneme k operacím crud. Vytvořil jsem samostatný návod na každou operaci, abych ji podrobně zakryl. Podívejme se nyní na každou sekci.
- vložte data do tabulky SQLite z Pythonu-v této části se naučíme, jak spustit příkaz INSERT z Pythonu pro vložení záznamů do tabulky SQLite.
- Přečtěte si Data tabulky SQLite z Pythonu-v tomto článku se dozvíme, jak provést dotaz SQLite SELECT z aplikace Python a načíst řádky tabulky., Také, dám vám vědět, jak používat
fetchall()
fetchmany()
fetchone()
metody kurzor třídy k načtení omezené řádky z tabulky pro zvýšení výkonu. - aktualizujte data tabulky SQLite z Pythonu-v této části se dozvíme, jak provést aktualizační dotaz z Pythonu a upravit záznamy tabulky SQLite.
- odstranit data z tabulky SQLite z Pythonu-v této části se naučíme, jak provést dotaz na odstranění z Pythonu, abychom odstranili záznamy z tabulky SQLite.,
spusťte SQL soubor (skripty) pomocí funkce executescript kurzoru
skripty SQLite jsou užitečné pro většinu denní úlohy. SQLite script je sada příkazů SQL uložených jako soubor (v.SQL formát).
skript SQLite obsahuje jednu nebo více operací SQL, které pak provedete z řádku příkazového řádku, kdykoli je to nutné.
níže uvádíme několik běžných scénářů, kde můžeme použít skripty SQLite
- zálohovat více databází najednou.
- porovnat počet řádků v tabulkách ze dvou různých databází se stejným schématem.,
- Udržujte všechny příkazy vytvořit tabulku SQL v databázovém skriptu. Takže můžete vytvořit databázové schéma na libovolném serveru.
skript můžete spustit z příkazového řádku SQLite pomocí .číst příkaz, jako je tento:
sqlite> .read mySQLiteScript.sql
pro tento příklad jsem vytvořil ukázkový skript SQLite, který vytvoří dvě tabulky. Toto je skript, který jsem vytvořil.
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);
nyní se podívejme, jak provést skript SQLite z Pythonu.
výstup: tabulky SQLite vytvořené provedením skriptu SQL z Pythonu.,
Successfully Connected to SQLiteSQLite script executed successfullysqlite connection is closed
Poznámka: Po připojení k SQLite, Jsme číst všechny obsah SQLite script soubor uložený na disku a zkopírovat jej do python string proměnné. Pak jsme zavolali metodu cursor.executscript(script)
pro provedení všech příkazů SQL v jednom hovoru.
Vložit/Načíst digitální data v SQLite Python
- V této sekci, dám vám vědět, jak vložit nebo uložit jakékoliv digitální informace, jako je například soubor, obrázek, video, či píseň jako BLOB data do SQLite tabulky z pythonu.,
- také se dozvíte, jak můžeme číst soubor, obrázek, video, píseň nebo jakákoli digitální data uložená v SQLite pomocí Pythonu.
podívejte se na našeho kompletního průvodce na Python SQLite BLOB Vložit a načíst soubor a obrázky.
Vytvořte nebo Předefinujte funkce SQLite pomocí modulu Python
Python sqlite3 nám poskytuje možnost vytvářet a předefinovat funkce SQL z Pythonu. Vytvořil jsem samostatný tutoriál, který jej podrobně pokryje. Přečtěte si, jak vytvářet a předefinovat funkce SQL z Pythonu.,
podívejte se na našeho kompletního průvodce na vytvoření nebo předefinování SQLite funkcí z Pythonu.
práce s typy dat a časových razítek SQLite v Pythonu a naopak
někdy musíme vložit nebo přečíst hodnotu data nebo DateTime z tabulky SQLite. Pokud tedy pracujete s hodnotami data nebo časového razítka, podívejte se prosím na náš samostatný tutoriál o práci s hodnotami SQLite DateTime v Pythonu.
výjimky z databáze SQLite
výjimka sqlite3.Varování
- podtřída výjimky. A můžete ji ignorovat, pokud chcete, aby nezastavila popravu.,
výjimka sqlite3.Chyba
- základní třída ostatních výjimek v modulu sqlite3. Jedná se o podtřídu výjimky.
výjimka sqlite3.Databaseerror
- výjimka vyvolaná pro chyby související s databází.
příklady: pokud se pokusíte otevřít soubor jako databázi sqlite3, která není databázovým souborem, získáte sqlite3.DatabaseError: soubor je šifrován nebo není databáze
výjimka sqlite3.IntegrityError
- podtřídy DatabaseError., Tuto výjimku získáte, pokud je ovlivněna relační integrita databáze, např.
výjimka sqlite3.ProgrammingError
- je to také podtřída DatabaseError. Tato výjimka byla vznesena kvůli programovacím chybám, např. vytvoření tabulky se stejným, který již existuje, syntaktická chyba v dotazech SQL.
výjimka sqlite3.OperationalError
- je to také podtřída DatabaseError. Tato chyba není v naší kontrole. Tato výjimka byla vznesena pro chyby, které souvisejí s operací databáze.,
- příklady: náhodné odpojení, server dolů, časový limit nastane, problémy se zdrojem dat. server down
výjimka sqlite3.NotSupportedError
- výjimku získáte při použití databázového API, které databáze nepodporuje.
- příklad: volání metody rollback () na připojení, které nepodporuje transakci. Volání commit po vytvoření příkazu tabulky.,
takže bude vždy vhodné zapsat veškerý kód operace databáze do bloku try, abyste mohli zachytit výjimky s výjimkou bloku, pokud existuje, a podniknout proti němu nápravná opatření.
zkusme například vložit data do tabulky, která v databázi SQLite neexistuje, a vytisknout celý zásobník výjimek.,
Výstup:
Změna SQLite časový limit připojení při připojení z v rámci Pythonu
To může být scénář, při více spojení, přístup k SQLite databáze, a jeden z procesů provádění některé operace změny dat v databázi, provádět změny dat připojení potřebuje, aby se zámek tj. SQLite databáze je uzamčena, dokud transakce je potvrzena. Parametr časového limitu, který určíme při připojení k databázi, určuje, jak dlouho by mělo spojení čekat, až zámek zmizí, dokud nevznikne výjimka.,
výchozí hodnota parametru timeout je 5.0 (pět sekund). Při připojení jej nemusíte specifikovat, protože se jedná o výchozí hodnotu. to znamená, že kdykoli se připojujete k SQLite z Pythonu a během 5 sekund jste nedostali odpověď, Váš program vyvolá výjimku. Pokud však čelíte problému časového limitu připojení a chcete jej zvýšit, můžete to provést pomocí argumentu časového limitu sqlite3.connect
funkce.
uvidíme, jak změnit hodnotu časového limitu při připojení SQLite z Pythonu.,
Výstup:
Connected to SQLiteTotal rows are: (2,)The Sqlite connection is closed
Určení celkové změny od SQLite databáze připojení byl otevřen
Pro audit nebo statistické účely, pokud chcete najít čísla z databáze řádků, které byly změněny, vložena nebo odstraněna, protože databáze připojení byl otevřen, můžete použít connection.total_changes
metoda Pythonu sqlite3 module.
metodaconnection.total_changes
vrací celkový počet řádků databáze, které byly ovlivněny. Podívejme se na příklad Pythonu a najdeme celkové změny, které byly provedeny od otevření databázového připojení.,
Výstup:
Connected to SQLiteTotal Rows affected since the database connection was opened: 3sqlite connection is closed
Vzít zálohu databáze SQLite zevnitř Python
Python sqlite3 modul poskytuje funkce, aby se záložní soubor databáze SQLite. Pomocí metody connection.backup()
můžete zálohovat databázi SQLite.
connection.backup(target, *, pages=0, progress=None, name="main", sleep=0.250)
Tato funkce provede zálohu databáze SQLite, a kopie bude zapsán do argumentu cíl, že musí být další Připojení instance., Ve výchozím nastavení, nebo pokud jsou stránky buď 0 nebo záporné celé číslo, je celá databáze zkopírována V jednom kroku; jinak metoda provádí kopírování smyčky až na stránky najednou.
argument názvu určuje databázi, kterou chcete zkopírovat. Argument spánku definuje počet sekund spánku mezi po sobě jdoucími pokusy o zálohování zbývajících stránek databáze. argument spánku lze zadat buď jako celé číslo nebo hodnotu s plovoucí desetinnou čárkou.
podívejme se na příklad zkopírování existující databáze do jiné.,
výstup:
Poznámka:
- po připojení k SQLite jsme obě databáze otevřeli pomocí dvou různých připojení.
- dále jsme provedli metodu
connection.backup()
pomocí první instance připojení. Také jsme zadali počet databázových stránek, které se mají kopírovat v každé iteraci.
Python SQLite cvičení Project
prosím vyřešit naše Python databáze programování cvičení zvládnout programování databáze v Pythonu.
Leave a Reply