Welcome to Our Website

Python sqlite3 tutorial (programování databáze)

v tomto tutoriálu budeme programově pracovat s databází sqlite3 pomocí Pythonu.

SQLite obecně je databáze bez serverů, kterou můžete použít téměř ve všech programovacích jazycích včetně Pythonu. Server-méně znamená, že není třeba instalovat samostatný server pro práci s SQLite, takže se můžete připojit přímo k databázi.

SQLite je lehký databáze, která může poskytnout relační databázový systém s nulovou konfigurací, protože není nutné konfigurovat, nebo nastavit něco, aby ji používat.,

použijeme SQLite verze 3 nebo SQLite3, takže začneme.

Obsah

Vytvořit Spojení

použití SQLite3 v Pythonu, v první řadě, budete muset import sqlite3 modul a pak vytvořit objekt připojení, který nás bude spojovat do databáze a umožní nám provádět příkazy SQL.

můžete objekt připojení pomocí connect (), funkce:

import sqlite3con = sqlite3.connect('mydatabase.db')

To bude vytvořit nový soubor s názvem ‚mydatabase.DB’.,

sqlite3 Cursor

Chcete-li provést příkazy SQLite v Pythonu, potřebujete objekt kurzoru. Můžete jej vytvořit pomocí metody kurzor ().

kurzor sqlite3 je metoda objektu připojení. K provedení SQLite3 prohlášení, měli byste navázat spojení na první, a pak vytvořit objekt od kurzoru pomocí připojení objektu takto:

con = sqlite3.connect('mydatabase.db')cursorObj = con.cursor()

Nyní můžeme použít kurzor, objekt na volání execute() metoda pro spouštění SQL dotazů.,

vytvořit databázi

při vytváření spojení s SQLite, který vytvoří databázový soubor automaticky, pokud již neexistuje. Tento databázový soubor je vytvořen na disku; můžeme také vytvořit databázi v paměti RAM pomocí funkce: memory: with the connect. Tato databáze se nazývá databáze v paměti.

Zvažte následující kód, ve kterém jsme vytvořili databázi s try, except a finally bloky zvládnout jakékoli výjimky:

za Prvé, jsme import sqlite3 modul, pak můžeme definovat funkci sql_connection., Uvnitř této funkce máme zkušební blok, kde funkce connect() vrací objekt připojení po navázání spojení.

pak máme kromě bloku, který v případě jakýchkoli výjimek vytiskne chybovou zprávu. Pokud nejsou žádné chyby, spojení bude navázáno a zobrazí zprávu následovně.

poté jsme uzavřeli naše připojení v konečně bloku. Uzavření připojení je volitelné, ale je to dobrá programovací praxe, takže uvolníte paměť z nepoužívaných zdrojů.,

vytvořit tabulku

Chcete-li vytvořit tabulku v SQLite3, můžete použít dotaz vytvořit tabulku v metodě execute (). Zvažte následující kroky:

  1. vytvořte objekt připojení.
  2. z objektu připojení vytvořte objekt kurzoru.
  3. pomocí objektu kurzoru zavolejte metodu execute s parametrem create table query.,

Pojďme vytvořit zaměstnanci s následujícími atributy:

employees (id, name, salary, department, position, hireDate)

kód bude vypadat takto:

Ve výše uvedeném kódu, máme definovány dvě metody, první z nich naváže spojení a druhá metoda vytvoří objekt kurzor k provedení příkazu create table.

metoda commit() uloží všechny změny, které provedeme. Nakonec se nazývají obě metody.

Chcete-li zkontrolovat, zda je naše tabulka vytvořena, můžete pro zobrazení tabulky použít prohlížeč DB pro SQLite. Otevři mydatabázu.,db soubor s programem, a měli byste vidět tabulku:

vložit do tabulky

pro vložení dat do tabulky, použijeme vložku do příkazu. Zvažte následující řádek kódu:

cursorObj.execute("INSERT INTO employees VALUES(1, 'John', 700, 'HR', 'Manager', '2017-01-04')")con.commit()

zkontrolujte, zda je vložena dat, klikněte na Procházet Data v DB Prohlížeče:

můžeme také předat hodnoty/argumenty příkazu INSERT v execute() metoda. Můžete použít otazník (?) jako zástupný symbol pro každou hodnotu., Syntaxe INSERT bude vypadat následovně:

cursorObj.execute('''INSERT INTO employees(id, name, salary, department, position, hireDate) VALUES(?, ?, ?, ?, ?, ?)''', entities)

Kde subjektů obsahují hodnoty pro následující zástupné symboly:

entities = (2, 'Andrew', 800, 'IT', 'Tech', '2018-02-06')

celý kód je následující:

Aktualizovat Tabulku

aktualizujte tabulku, stačí vytvořit připojení, pak vytvořit kurzor objekt pomocí připojení a nakonec použít příkaz UPDATE v execute() metoda.

Předpokládejme, že chceme aktualizovat jméno zaměstnance, jehož id se rovná 2., Pro aktualizaci použijeme prohlášení o aktualizaci a pro zaměstnance, jehož id se rovná 2. Jako podmínku použijeme klauzuli WHERE k výběru tohoto zaměstnance.

Zvažte následující kód:

změnit název z Andrew Rogers takto:

Select

můžete použít příkaz select pro výběr dat z dané tabulky. Pokud chcete vybrat všechny sloupce dat z tabulky, můžete použít hvězdičku (*)., Syntaxe pro toto bude následující:

select * from table_name

V sqlite3 se příkaz SELECT provede metodou execute objektu kurzoru., Například, vyberte všechny sloupce zaměstnanců tabulky, spusťte následující kód:

cursorObj.execute('SELECT * FROM employees ')

Pokud chcete vybrat několik sloupců z tabulky, pak zadejte sloupce jako následující:

select column1, column2 from tables_name

například,

cursorObj.execute('SELECT id, name FROM employees')

select vybere požadovaná data z tabulky databáze, a pokud chcete načíst vybrané datové, fetchall() metoda kurzoru objekt se používá. Ukážeme to v další části.,

Načíst všechna data

načíst data z databáze, provedeme příkaz SELECT a pak použije fetchall() metoda kurzoru objekt pro uložení hodnoty do proměnné. Poté projdeme proměnnou a vytiskneme všechny hodnoty.

kód bude vypadat takto:

výše uvedený kód bude tisknout záznamy v naší databázi takto:

můžete také použít fetchall() v jednom řádku takto:


Pokud chcete, aby přinesla konkrétní údaje z databáze, můžete použít klauzuli where., Chceme například získat ID a jména těch zaměstnanců, jejichž plat je vyšší než 800. Za tímto účelem naplníme naši tabulku více řádky a poté provedeme náš dotaz.

můžete použít příkaz insert k naplnění dat nebo je můžete zadat ručně do programu prohlížeče DB.

načíst id a jména těch, kteří mají plat větší než 800:

výše uvedený příkaz SELECT, místo toho, pomocí hvězdičky (*), jsme zadané id a název atributy., Výsledek bude vypadat následovně:

SQLite3 rowcount

SQLite3 rowcount je použita k vrácení počtu řádků, které jsou ovlivněny, nebo vybrán nejnovější vykonán SQL dotaz.

když použijeme rowcount s příkazem SELECT, -1 se vrátí, protože kolik řádků je vybráno, není známo, dokud nejsou všechny načteny., Vezměme si příklad níže:

print(cursorObj.execute('SELECT * FROM employees').rowcount)

Proto, aby se počet řádků, budete muset načíst všechny data, a pak si délku výsledek:

rows = cursorObj.fetchall()print len (rows)

Při použití DELETE bez jakýchkoli podmínek (klauzuli where), který bude odstranit všechny řádky v tabulce, a to se vrátí celkový počet smazaných řádků v rowcount.

print(cursorObj.execute('DELETE FROM employees').rowcount)

Pokud není odstraněn žádný řádek, vrátí nulu.,

Seznam tabulek

seznam všech tabulek v SQLite3 databáze, měli byste dotaz na tabulku sqlite_master a pak použít fetchall() k načtení výsledků z příkazu SELECT.

sqlite_master je hlavní tabulka v sqlite3, která ukládá všechny tabulky.

Tento bude seznam všech tabulek takto:

Zkontrolujte, zda tabulka existuje, nebo ne

Při vytváření tabulky, měli bychom se ujistit, že tabulka již existuje. Podobně při odebírání / mazání tabulky by měla existovat tabulka.,s“ s DROP TABLE následovně:

drop table if exists table_name

například,

cursorObj.execute('drop table if exists projects')

můžeme také zkontrolovat, zda tabulce chceme, aby přístup existuje, nebo ne spuštěním následujícího dotazu:

cursorObj.execute('SELECT name from sqlite_master WHERE type = "table" AND name = "employees"')print(cursorObj.fetchall())

Pokud zaměstnanců tabulka neexistuje, vrátí se jeho jméno takto:

Pokud je název tabulky jsme specifikovali, neexistuje, prázdné pole bude vrácen:

Drop table

můžete přetáhnout/smazat tabulku pomocí DROP prohlášení., Syntaxe DROP příkazu je následující:

drop table table_name

drop tabulka, tabulka by měla existovat v databázi. Proto je doporučeno používat „pokud existuje,“ s poklesem prohlášení zní následovně:

drop table if exists table_name

například,

SQLite3 výjimky

Výjimky jsou v běhu chyby. V programování Pythonu jsou všechny výjimky instancí třídy odvozené od BaseException.,

V SQLite3 máme následující hlavní výjimky Pythonu:

DatabaseError

jakákoli chyba související s databází vyvolává DatabaseError.

IntegrityError

IntegrityError je podtřída DatabaseError a je zvýšena, když je problém integrity dat. Například zahraniční data nejsou aktualizována ve všech tabulkách, což vede k nekonzistenci dat.

ProgrammingError

výjimka ProgrammingError vyvolává, pokud existují chyby syntaxe nebo tabulka není nalezena nebo funkce je volána s nesprávným počtem parametrů / argumentů.,

Operacialerror

tato výjimka se zvýší, když se operace databáze nezdaří, například neobvyklé odpojení. To není chyba programátorů.

NotSupportedError

při použití některých metod, které nejsou definovány nebo podporovány databází, to zvýší výjimku NotSupportedError.

sqlite3 Executemany (Bulk insert)

příkaz executemany můžete použít k vložení více řádků najednou.

Zvažte následující kód:

Zde jsme vytvořili tabulku se dvěma sloupci, a „data“ má čtyři hodnoty pro každý sloupec., Proměnnou předáme spustitelnémnoho () metoda spolu s dotazem.

Všimněte si, že jsme použili zástupný symbol předat hodnoty.

výše uvedený kód bude generovat následující výsledek:

Zavření Spojení

Jakmile jste udělal s vaší databáze, je dobrým zvykem uzavřít spojení. Připojení můžete zavřít pomocí metody zavřít ().,

Chcete-li ukončit připojení, použijte připojení objektu a volání metody close() takto:

con = sqlite3.connect('mydatabase.db')#program statementscon.close()

SQLite3 datetime

V Pythonu SQLite3 databáze, můžeme snadno uložit datum nebo čas pomocí importu datatime modul. Následující formáty jsou nejběžnější formáty můžete použít pro datetime:

YYYY-MM-DDYYYY-MM-DD HH:MMYYYY-MM-DD HH:MM:SSYYYY-MM-DD HH:MM:SS.SSSHH:MMHH:MM:SSHH:MM:SS.SSSnow

Zvažte následující kód:

V tomto kodexu, dovezli jsme datetime modul první, a vytvořili jsme tabulku s názvem úkoly s tří sloupců.

datový typ třetího sloupce je datum., Chcete-li vložit datum do sloupce, použili jsme datetime.datum. Podobně můžeme použít datetime.čas zvládnout čas.

výše uvedený kód bude generovat následující výstup:

velkou flexibilitu a mobilitu SQLite3 databáze, aby to první volbou pro všechny vývojáře, aby ji používat, a loď to s jakýmkoli výrobkem pracuje.

díky své úžasné přenositelnosti můžete používat databáze sqlite3 v projektech Windows, Linux, Mac OS, Android a iOS. Takže pošlete jeden soubor se svým projektem a to je vše.

doufám, že vám tutoriál bude užitečný., Vrať se.

Děkuji.

Ayesha Tariq je full stack softwarový inženýr, web developer, a blockchain vývojka nadšence. Má rozsáhlé znalosti C / C++, Java, Kotlin, Python, a různé další.

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *