ebben a bemutatóban az sqlite3 adatbázissal programozottan dolgozunk a Python használatával.
az SQLite általában egy szerver nélküli adatbázis, amelyet szinte minden programozási nyelven használhat, beleértve a Python-t is. Szerver nélküli azt jelenti, hogy nincs szükség külön szerver telepítésére az SQLite használatához, így közvetlenül csatlakozhat az adatbázishoz.
az SQLite egy könnyű adatbázis, amely nulla konfigurációjú relációs adatbázis-kezelő rendszert biztosít, mivel nincs szükség konfigurálásra vagy beállításra annak használatához.,
az SQLite 3-as vagy SQLite3-as verzióját fogjuk használni, Tehát kezdjük el.
Tartalomjegyzék
a Kapcsolat Létrehozása
használni SQLite3 Python, először meg kell importálni az sqlite3 modul, majd hozzon létre egy kapcsolat objektum, amely összeköt minket, hogy az adatbázisba kerül, hadd hajtsa végre az SQL-utasítások.
a connect() függvény segítségével kapcsolódási objektumot hozhat létre:
import sqlite3con = sqlite3.connect('mydatabase.db')
, amely új fájlt hoz létre a “mydatabase” névvel.db”.,
SQLite3 kurzor
az SQLite kijelentések Python-ban történő végrehajtásához kurzor objektumra van szüksége. A kurzor() módszerrel hozhatja létre.
az SQLite3 kurzor a csatlakozási objektum módszere. Az SQLite3 utasítások végrehajtásához először létre kell hoznia egy kapcsolatot, majd létre kell hoznia a kurzor objektumát a connection object segítségével az alábbiak szerint:
con = sqlite3.connect('mydatabase.db')cursorObj = con.cursor()
most a kurzorobjektum segítségével hívhatjuk az execute() módszert az SQL lekérdezések végrehajtására.,
adatbázis létrehozása
az SQLite-tal való kapcsolat létrehozásakor automatikusan létrehoz egy adatbázisfájlt, ha még nem létezik. Ez az adatbázisfájl a lemezen jön létre; adatbázist is létrehozhatunk a RAM-ban: memória: a connect funkcióval. Ezt az adatbázist in-memory adatbázisnak hívják.
fontolja meg az alábbi kódot, amelyben próbával létrehoztunk egy adatbázist, kivéve végül blokkolja a kivételek kezelését:
először importáljuk az sqlite3 modult, majd meghatározunk egy függvényt sql_connection., Ezen a funkción belül van egy próbablokk, ahol a connect () funkció visszatér egy csatlakozási objektumhoz a kapcsolat létrehozása után.
akkor van, kivéve blokk, amely kivétel esetén kiírja a hibaüzenetet. Ha nincsenek hibák, akkor a kapcsolat létrejön, és a következő üzenetet jeleníti meg.
ezután lezártuk a kapcsolatot a végül blokkban. A kapcsolat bezárása opcionális, de ez egy jó programozási gyakorlat, így felszabadítja a memóriát a fel nem használt erőforrásoktól.,
Táblázat létrehozása
táblázat létrehozásához az sqlite3-ban használhatja a Táblázat létrehozása lekérdezést az execute() metódusban. Vegye figyelembe a következő lépéseket:
- hozzon létre egy kapcsolatobjektumot.
- a kapcsolatobjektumból hozzon létre egy kurzorobjektumot.
- a kurzorobjektum használatával hívja meg az execute metódust táblázat lekérdezés létrehozása paraméterként.,
hozzunk létre alkalmazottakat a következő attribútumokkal:
employees (id, name, salary, department, position, hireDate)
a kód így lesz:
a fenti kódban két módszert definiáltunk, az első kapcsolatot hoz létre, a második módszer pedig kurzorobjektumot hoz létre a Táblázat létrehozása utasítás végrehajtásához.
a commit () módszer elmenti az összes módosítást. Végül mindkét módszert hívják.
annak ellenőrzésére, hogy a táblázat jön létre, akkor a DB böngésző SQLite megtekintéséhez a táblázatban. Nyissa ki a mydatabase-t.,db fájl a program, és meg kell látni a táblázatot:
helyezze be a táblázat
adatok beszúrása a táblázatban, használjuk a betétet a nyilatkozatot. Vegyük a következő sort a kódot:
cursorObj.execute("INSERT INTO employees VALUES(1, 'John', 700, 'HR', 'Manager', '2017-01-04')")con.commit()
, Hogy ellenőrizze, ha az adatok egészül ki, kattintson a Tallózás Adatok a DB Böngésző:
Mi is át értékek/érveket, hogy egy nyilatkozatot, HELYEZZE be az execute() metódus. Használhatja a kérdőjelet (?) minden érték helyőrzőjeként., A szintaxis a BESZÚRÁS lesz, mint a következő:
cursorObj.execute('''INSERT INTO employees(id, name, salary, department, position, hireDate) VALUES(?, ?, ?, ?, ?, ?)''', entities)
Amennyiben szervezetek tartalmazza az értékek a helyőrzők a következőképpen:
entities = (2, 'Andrew', 800, 'IT', 'Tech', '2018-02-06')
A teljes kód a következő:
Frissítés Táblázat
frissíteni az asztalra, egyszerűen hozzon létre egy kapcsolatot, akkor hozzon létre egy kurzor objektum segítségével a kapcsolat végül használja a FRISSÍTÉSI nyilatkozat az execute() metódus.
tegyük fel, hogy frissíteni akarjuk annak a munkavállalónak a nevét,akinek az azonosítója 2., A frissítéshez a frissítési nyilatkozatot fogjuk használni annak a munkavállalónak,akinek az azonosítója 2. A WHERE záradékot fogjuk használni a munkavállaló kiválasztásának feltételeként.
vegye figyelembe a következő kódot:
Ez Andrew nevét Rogersre változtatja az alábbiak szerint:
Select statement
a select utasítás segítségével kiválaszthatja az adatokat egy adott táblázatból. Ha az adatok összes oszlopát egy táblázatból szeretné kiválasztani, használhatja a csillagot (*)., Ennek szintaxisa a következő lesz:
select * from table_name
az SQLite3-ban a SELECT utasítás a kurzor objektum végrehajtási módszerében kerül végrehajtásra., Például válassza ki az alkalmazottak táblázatának összes oszlopát, futtassa a következő kódot:
cursorObj.execute('SELECT * FROM employees ')
ha néhány oszlopot szeretne kiválasztani a táblázatból, akkor adja meg az alábbi oszlopokat:
select column1, column2 from tables_name
például
cursorObj.execute('SELECT id, name FROM employees')
a kijelölési utasítás kiválasztja a szükséges adatokat az adatbázis táblából, és ha a kiválasztott adatokat szeretné letölteni, akkor a kurzor objektum fetchall() metódusát használja. Ezt a következő részben mutatjuk be.,
minden adat lekérése
az adatok adatbázisból történő lekéréséhez végrehajtjuk a SELECT utasítást, majd a kurzor objektum fetchall() metódusát használjuk az értékek változóba történő tárolására. Ezt követően a változón keresztül körbejárjuk az összes értéket.
a kód így lesz:
a fenti kód az adatbázisunkban szereplő rekordokat a következőképpen nyomtatja ki:
a fetchall() egy sorban is használható az alábbiak szerint:
ha konkrét adatokat szeretne letölteni az adatbázisból az adatbázis, akkor a Hol záradék., Szeretnénk például azoknak a munkavállalóknak az igazolványát és nevét, akiknek a fizetése meghaladja a 800-at. Ehhez töltsük fel táblázatunkat több sorral, majd hajtsuk végre a lekérdezést.
használhatja a Beszúrás nyilatkozatot az adatok feltöltéséhez, vagy manuálisan beírhatja azokat a DB böngésző programba.
most a 800-nál nagyobb fizetéssel rendelkezők azonosítójának és nevének letöltéséhez:
a fenti SELECT nyilatkozatban a csillag ( * ) használata helyett megadtuk az azonosító és név attribútumokat., Az eredmény a következő lesz:
SQLite3 rowcount
az SQLite3 rowcount a legutóbb végrehajtott SQL lekérdezés által érintett vagy kiválasztott sorok számának visszaadására szolgál.
amikor a ROWCOUNT-ot használjuk a SELECT utasításnál, -1 vissza fog térni, mivel hány sor van kiválasztva, amíg az összes le nem kerül., Tekintsük az alábbi példát:
print(cursorObj.execute('SELECT * FROM employees').rowcount)
Ezért, hogy a sor szám, meg kell, hogy hozzon az adatokat, majd a hossza az eredmény:
rows = cursorObj.fetchall()print len (rows)
Ha használja a DELETE kifejezés minden feltétel nélkül (egy, hol záradék), hogy törli a sort a táblázatban, majd vissza a száma törölt sorok rowcount.
print(cursorObj.execute('DELETE FROM employees').rowcount)
ha egyetlen sort sem törölnek, akkor nulla lesz.,
listatáblák
az sqlite3 adatbázis összes táblájának felsorolásához lekérdeznie kell az sqlite_master táblát, majd a FETCHALL() segítségével kell letöltenie az eredményeket a SELECT utasításból.
az sqlite_master az sqlite3 mesterasztala, amely az összes táblát tárolja.
Ez az összes táblázatot az alábbiak szerint sorolja fel:
ellenőrizze, hogy létezik-e tábla vagy sem
táblázat létrehozásakor meg kell győződnünk arról, hogy a táblázat még nem létezik. Hasonlóképpen, a táblázat eltávolításakor / törlésekor a táblázatnak léteznie kell.,s” a DROP TABLE utasítás a következőképpen:
drop table if exists table_name
például,
cursorObj.execute('drop table if exists projects')
Mi is ellenőrizheti, ha az asztalra szeretnénk hozzáférni létezik, vagy nem, a végrehajtó a következő lekérdezést:
cursorObj.execute('SELECT name from sqlite_master WHERE type = "table" AND name = "employees"')print(cursorObj.fetchall())
Ha a munkavállalók táblázat létezik, vissza fog térni a nevét a következőképpen:
Ha a táblázat név meghatározott nem létezik, egy üres tömb lesz tért vissza:
Drop table
csepp/töröl egy táblázat segítségével a CSEPP nyilatkozatot., A Drop utasítás szintaxisa a következő:
egy táblázat leejtéséhez a táblázatnak léteznie kell az adatbázisban. Ezért ajánlott a “ha létezik” kifejezést a következő cseppnyilatkozattal használni:
drop table if exists table_name
például
sqlite3 kivételek
kivételek a futási idő hibái. A Python programozásban minden kivétel a BaseException-ből származó osztály példányai.,
az SQLite3-ban a következő fő Python kivételek vannak:
DatabaseError
az adatbázishoz kapcsolódó bármely hiba felveti az Adatbázisterror.
IntegrityError
IntegrityError egy alosztálya DatabaseError és felmerül, ha van egy adatintegritás kérdés. Például a külföldi adatok nem frissülnek az összes táblában, ami az adatok következetlenségét eredményezi.
ProgrammingError
a kivétel ProgrammingError felveti, ha vannak szintaktikai hibák vagy táblázat nem található, vagy függvényt hívják a rossz számú paraméterek / érvek.,
OperationalError
Ez a kivétel akkor merül fel, ha az adatbázisműveletek nem működnek, például szokatlan leválasztás. Ez nem a programozók hibája.
NotSupportedError
ha olyan módszereket használ, amelyeket az adatbázis nem határoz meg vagy nem támogat, ez növeli a NotSupportedError kivételt.
SQLite3 Executemany (Bulk insert)
a executemany utasítás segítségével egyszerre több sort is beilleszthet.
vegye figyelembe a következő kódot:
itt létrehoztunk egy táblázatot két oszloppal, az “adat” pedig négy értéket tartalmaz minden oszlophoz., A változót a végrehajtóhoz továbbítjuksok () módszer a lekérdezéssel együtt.
vegye figyelembe, hogy a helyőrzőt az értékek átadására használtuk.
a fenti kód a következő eredményt hozza létre:
szoros kapcsolat
miután elvégezte az adatbázisát, jó gyakorlat a kapcsolat bezárása. A kapcsolatot a Bezárás() módszerrel zárhatja le.,
a kapcsolat bezárásához használja a kapcsolat objektumot, majd hívja a Bezárás() módszert az alábbiak szerint:
con = sqlite3.connect('mydatabase.db')#program statementscon.close()
SQLite3 datetime
a Python SQLite3 adatbázisban könnyen tárolhatjuk a dátumot vagy az időt a datatime modul importálásával. A következő formátumokat a leggyakoribb formátumok segítségével 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
Fontolja meg a következő kódot:
ebben A kód, akkor az importált a datetime modul első, majd létrehoztunk egy táblázatban megnevezett feladatokat a három oszlop.
a harmadik oszlop adattípusa dátum., A dátum oszlopba történő beillesztéséhez a datetime-t használtuk.randi. Hasonlóképpen, tudjuk használni datetime.ideje kezelni az időt.
a fenti kód a következő kimenetet generálja:
az sqlite3 adatbázis nagy rugalmassága és mobilitása lehetővé teszi, hogy bármely fejlesztő használja és szállítsa bármilyen termékkel, amellyel dolgozik.
használhatja SQLite3 adatbázisok Windows, Linux, Mac OS, Android, iOS projektek miatt félelmetes hordozhatóság. Szóval egy fájlt küldesz a projekteddel, és ennyi.
remélem, hasznosnak találja a bemutatót., Gyere vissza.
köszönöm.
Ayesha Tariq egy teljes stack szoftverfejlesztő, webfejlesztő és blockchain Fejlesztő rajongó. Széles körű ismeretekkel rendelkezik a C/C++, Java, Kotlin, Python, és különböző mások.