celem tego samouczka Python SQLite jest pokazanie, jak tworzyć aplikacje bazodanowe Pythona za pomocą bazy danych SQLite. Dowiesz się jak wykonywać operacje bazy danych SQLite z języka Python.
Jak wszyscy wiecie, SQLite jest biblioteką języka C, która implementuje silnik bazy danych SQL, który jest stosunkowo szybki, bezserwerowy i samodzielny,niezawodny. SQLite jest najczęściej używanym silnikiem bazy danych w środowisku testowym (patrz Strona główna SQLite)., SQLite jest wbudowany w większości komputerów i urządzeń mobilnych i przeglądarek. Oficjalny moduł Pythona sqlite3 pomaga nam pracować z bazą danych SQLite.
moduł Python sqlite3 jest zgodny ze specyfikacją Python Database API w wersji 2.0 (PEP 249). PEP 249 zapewnia interfejs SQL, który został zaprojektowany, aby zachęcić i utrzymać podobieństwo między modułami Pythona, które są używane do dostępu do baz danych.,
ten tutorial skupia się głównie na: –
- łączeniu się z bazą danych SQLite z Pythona i tworzeniu bazy danych SQLite i tabel
- dalej, omówimy typy danych SQLite i odpowiadające im typy Pythona
- dalej, dowiemy się jak wykonać operację SQLite CRUD tj.,ieve danych cyfrowych w SQLite za pomocą Pythona
- następnie, będzie obejmować obsługę transakcji SQLite, tworzenie i wywoływanie funkcji SQLite i technik obsługi błędów w celu opracowania solidnych programów Pythona z bazą danych SQLite
- będzie również poinformować, jak tworzyć i zarządzać bazą danych w pamięci i konwertować wartości SQLite do niestandardowych typów Pythona
- wykonaj kopię zapasową bazy danych SQLite z poziomu Pythona
Pokaż teraz każdą sekcję.,
połączenie Pythona SQLite
Ta sekcja pozwala Ci dowiedzieć się, jak utworzyć bazę danych SQLite i połączyć się z nią za pośrednictwem Pythona za pomocą modułu sqlite3.
aby nawiązać połączenie z SQLite, musisz podać Nazwę bazy danych, którą chcesz połączyć. Jeśli podasz nazwę pliku bazy danych, który już znajduje się na dysku, połączy się z nim. Ale jeśli Podany plik bazy danych SQLite nie istnieje, SQLite utworzy dla Ciebie nową bazę danych.,
musisz wykonać następujące kroki, aby połączyć się z SQLite
- użyj metody
connect()
modułu sqlite3 i podaj nazwę bazy danych jako argument. - Utwórz obiekt kursora używając obiektu connection zwracanego przez metodę connect do wykonywania zapytań SQLite z Pythona.
- Zamknij obiekt kursora i obiekt połączenia z bazą danych SQLite po zakończeniu pracy.
- wyłapuje wyjątek bazy danych, jeśli wystąpi podczas tego procesu połączenia.
następujący program Pythona tworzy nowy plik bazy danych „sqlite_python.,db ” i wypisuje szczegóły wersji SQLite.
powinieneś otrzymać następujące wyjście po podłączeniu do SQLite z Pythona.
Database created and Successfully Connected to SQLiteSQLite Database Version is: The SQLite connection is closed
szczegółowo zrozum kod połączenia SQLite
Importuj sqlite3
- ta linia importuje moduł sqlite3 w naszym programie. Korzystając z klas i metod zdefiniowanych w module sqlite3 możemy komunikować się z bazą danych SQLite.
sqlite3.,connect ()
- używając metody
connect()
możemy utworzyć połączenie z bazą danych SQLite. Metoda ta zwraca obiekt połączenia SQLite. - obiekt connection nie jest bezpieczny dla wątków. moduł sqlite3 nie pozwala na współdzielenie połączeń między wątkami. Jeśli nadal spróbujesz to zrobić, otrzymasz wyjątek w czasie wykonywania.
- metoda
connect()
akceptuje różne argumenty. W naszym przykładzie przekazaliśmy argument nazwa bazy danych do connect.
cursor = sqliteconnection.,cursor ()
- używając obiektu connection możemy utworzyć obiekt cursor, który pozwala nam na wykonywanie poleceń / zapytań SQLite za pomocą Pythona.
- możemy utworzyć tyle kursorów, ile chcemy z jednego obiektu połączenia. Podobnie jak obiekt connection, ten obiekt kursora również nie jest bezpieczny dla wątków. moduł sqlite3 nie pozwala na dzielenie kursorów między wątkami. Jeśli nadal spróbujesz to zrobić, otrzymasz wyjątek w czasie wykonywania.
Po tym, stworzyliśmy zapytanie SQLite, aby uzyskać wersję bazy danych.
kursor.,execute ()
- używając metody execute kursora możemy wykonać operację bazy danych lub zapytanie z Pythona. Metoda
cursor.execute()
pobiera zapytanie SQLite jako parametr i zwraca resultSet, czyli tylko wiersze bazy danych. - możemy pobrać wynik zapytania z resultSet za pomocą metod kursora, takich jak
- w naszym przykładzie wykonujemy zapytanie
SELECT version();
, aby pobrać wersję SQLite.,
try-except-finally block: umieściliśmy cały nasz kod w bloku try-except, aby wychwycić wyjątki i błędy bazy danych SQLite, które mogą wystąpić podczas tego procesu.
- używając klasy
sqlite3.Error
modułu sqlite3, możemy obsłużyć każdy błąd bazy danych i wyjątek, który może wystąpić podczas pracy z SQLite z Pythona. - korzystając z tego podejścia możemy uczynić naszą aplikację solidną. Klasa
sqlite3.Error
pomaga nam szczegółowo zrozumieć błąd. Zwraca komunikat o błędzie i Kod błędu.
kursor.close () i connection.,close()
- dobrą praktyką jest zamykanie kursora i obiektu connection po zakończeniu pracy, aby uniknąć problemów z bazą danych.
Tworzenie tabeli SQLite z Pythona
w tej sekcji dowiemy się, jak utworzyć tabelę w bazie danych SQLite z Pythona przy użyciu modułu sqlite3. Instrukcja Create A table jest zapytaniem DDL zobaczmy jak wykonać ją z Pythona.
w tym przykładzie tworzymy tabelę „sqlitedb_developers” wewnątrz tabeli „sqlite_python.db ” baza danych.,
kroki tworzenia tabeli w SQLite z Pythona: –
- Połącz się z SQLite za pomocą
sqlite3.connect()
. Wyjaśniłem kod połączenia SQLite na początku tego artykułu. - przygotowanie zapytania create table.
- wykonaj zapytanie używając
cursor.execute(query)
- na końcu Zamknij połączenie z bazą danych SQLite i obiekt kursora.,
Wyjście:
Successfully Connected to SQLiteSQLite table created:the sqlite connection is closed
typy danych SQLite i odpowiadające im typy Pythona
zanim przejdziemy dalej do wykonywania operacji SQLite crud z Pythona najpierw zrozum typ danych SQLite i odpowiadające im typy Pythona, które pomogą nam przechowywać i odczytywać dane z tabeli SQLite.
silnik bazy danych SQLite ma wiele klas pamięci do przechowywania wartości. Każda wartość przechowywana w bazie danych SQLite ma jedną z następujących klas lub typów danych.,
typy danych SQLite:
- NULL: – wartość jest wartością NULL.– / li >
- INTEGER: – zapisanie wartości liczbowej. Liczba całkowita zapisana w 1, 2, 3, 4, 6, lub 8 bajtów w zależności od wielkości liczby.
- REAL: – wartość jest wartością zmiennoprzecinkową, na przykład 3.14 wartość PI
- tekst: – wartość jest ciągiem tekstowym, wartością tekstową zapisaną przy użyciu kodowania UTF-8, UTF-16BE lub UTF-16LE.
- BLOB: – wartość jest blobem danych, tzn. danych binarnych. Służy do przechowywania obrazów i plików.
następujące typy Pythona przekonwertowane do SQLite bez żadnego problemu., Tak więc podczas modyfikowania lub czytania z tabeli SQLite poprzez wykonywanie operacji CRUD, zapamiętaj tę tabelę.,
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 Insert, Update, Delete operations from Python.
teraz znamy tabelę i są to szczegóły kolumn, więc przejdźmy do operacji crud. Stworzyłem osobny samouczek na temat każdej operacji, aby szczegółowo go opisać. Zobaczmy teraz każdą sekcję.
- Wstaw dane do tabeli SQLite z Pythona – w tej sekcji dowiemy się, jak wykonać polecenie INSERT z Pythona, aby wstawić rekordy do tabeli SQLite.
- odczyt danych tabeli SQLite z Pythona – w tym artykule dowiemy się, jak wykonać zapytanie SQLite SELECT z aplikacji Pythona, aby pobrać wiersze tabeli., Ponadto dam Ci znać, jak używać
fetchall()
,fetchmany()
Ifetchone()
metod klasy kursora do pobierania ograniczonych wierszy z tabeli w celu zwiększenia wydajności. - aktualizacja danych tabeli SQLite z Pythona – w tej sekcji dowiemy się, jak wykonać zapytanie UPDATE z Pythona, aby zmodyfikować rekordy tabeli SQLite.
- Usuń dane z tabeli SQLite z Pythona – w tej sekcji dowiemy się, jak wykonać zapytanie DELETE z Pythona, aby usunąć rekordy z tabeli SQLite.,
wykonaj plik SQL (skrypty) za pomocą funkcji executescript kursora
Skrypty SQLite są przydatne w większości codziennych zadań. Skrypt SQLite jest zestawem poleceń SQL zapisanych jako plik (w .format sql).
skrypt SQLite zawiera jedną lub więcej operacji SQL, które następnie wykonasz z wiersza poleceń w razie potrzeby.
poniżej przedstawiamy kilka typowych scenariuszy, w których możemy używać skryptów SQLite
- tworzenia kopii zapasowych wielu baz danych naraz.
- porównuje liczbę wierszy w tabelach z dwóch różnych baz danych o tym samym schemacie.,
- Przechowuj wszystkie polecenia SQL CREATE TABLE w skrypcie bazy danych. Możesz więc utworzyć schemat bazy danych na dowolnym serwerze.
skrypt można wykonać z linii poleceń SQLite używając .polecenie read, takie jak:
sqlite> .read mySQLiteScript.sql
w tym przykładzie utworzyłem przykładowy skrypt SQLite, który utworzy dwie tabele. To jest skrypt, który stworzyłem.
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);
teraz zobaczmy, jak wykonać skrypt SQLite z poziomu Pythona.
Output: tabele SQLite utworzone przez wykonanie skryptu SQL z Pythona.,
Successfully Connected to SQLiteSQLite script executed successfullysqlite connection is closed
Uwaga: Po podłączeniu do SQLite odczytujemy całą zawartość pliku skryptu SQLite zapisanego na dysku i skopiujemy go do zmiennej łańcuchowej Pythona. Następnie wywołaliśmycursor.executscript(script)
metodę do wykonania wszystkich poleceń SQL w jednym wywołaniu.
Wstaw/Odzyskaj dane cyfrowe w SQLite używając Pythona
- w tej sekcji dam Ci znać, jak wstawić lub zapisać wszelkie informacje cyfrowe, takie jak plik, obraz, wideo lub utwór jako dane BLOB w tabeli SQLite z Pythona.,
- dowiedz się również, jak możemy odczytać plik, obraz, wideo, piosenkę lub dowolne dane cyfrowe przechowywane w SQLite za pomocą Pythona.
zapoznaj się z naszym kompletnym przewodnikiem po Python SQLite BLOB, aby wstawić i pobrać plik i obrazy.
Tworzenie lub Redefiniowanie funkcji SQLite za pomocą Pythona
moduł Pythona sqlite3 zapewnia nam możliwość tworzenia i redefiniowania funkcji SQL z poziomu Pythona. Stworzyłem osobny samouczek, aby szczegółowo go opisać. Zobacz jak tworzyć i redefiniować funkcje SQL z poziomu Pythona.,
zapoznaj się z naszym kompletnym przewodnikiem dotyczącym tworzenia lub redefiniowania funkcji SQLite z poziomu Pythona.
praca z typami daty i znacznika czasu SQLite w Pythonie i odwrotnie
czasami musimy wstawić lub odczytać wartość daty lub DateTime z tabeli SQLite. Jeśli więc pracujesz z wartością daty lub znacznika czasu, zapoznaj się z naszym osobnym samouczkiem na temat pracy z wartościami DateTime SQLite w Pythonie.
wyjątki w bazie danych SQLite
wyjątek sqlite3.Warning
- podklasa WYJĄTKÓW. I możesz to zignorować, jeśli chcesz, to nie zatrzyma egzekucji.,
wyjątek sqlite3.Błąd
- podstawowa klasa innych wyjątków w module sqlite3. Jest to podklasa WYJĄTKÓW.
wyjątek sqlite3.DatabaseError
- wyjątek zgłoszony dla błędów związanych z bazą danych.
przykłady: jeśli spróbujesz otworzyć plik jako bazę danych sqlite3, która nie jest plikiem bazy danych, otrzymasz sqlite3.DatabaseError: plik jest zaszyfrowany lub nie jest bazą danych
wyjątek sqlite3.IntegrityError
- podklasa bazy danych., Otrzymasz ten wyjątek, gdy zostanie naruszona integralność relacyjna bazy danych, np. sprawdzenie klucza obcego nie powiedzie się.
wyjątek sqlite3.ProgrammingError
- jest to również podklasa DatabaseError. Wyjątek ten powstał z powodu błędów programistycznych, np. tworzenia tabeli o tej samej, która już istnieje, błędu składni w zapytaniach SQL.
wyjątek sqlite3.OperationalError
- jest to również podklasa DatabaseError. Ten błąd nie jest pod naszą kontrolą. Wyjątek ten dotyczy błędów związanych z działaniem bazy danych.,
- przykłady: przypadkowe rozłączenie, serwer wyłączony, timeout, problemy ze źródłem danych. serwer wyłączony
wyjątek sqlite3.NotSupportedError
- podczas korzystania z API bazy danych pojawi się wyjątek, który nie jest obsługiwany przez bazę danych.
- przykład: wywołanie metody rollback () przy połączeniu, które nie obsługuje transakcji. Wywołanie commit po utworzeniu polecenia table.,
więc zawsze będzie wskazane, aby zapisać cały kod operacji bazy danych w bloku try, aby można było wyłapać wyjątki w bloku except, jeśli istnieją, i podjąć działania naprawcze wobec niego.
na przykład spróbujmy wstawić dane do tabeli, która nie istnieje w bazie danych SQLite i wydrukować pełny stos WYJĄTKÓW.,
Output:
Zmień limit czasu połączenia SQLite podczas łączenia się z poziomu Pythona
może to być scenariusz, gdy wiele połączeń uzyskuje dostęp do bazy danych SQLite, a jeden z procesów wykonujących operację modyfikacji danych w bazie danych, aby wykonać połączenie modyfikacji danych, musi przyjąć blokadę, tzn. baza danych SQLite jest zablokowana do momentu zatwierdzenia transakcji. Parametr timeout, który określamy podczas łączenia się z bazą danych, określa, jak długo połączenie powinno czekać, aż blokada zniknie, aż do wywołania wyjątku.,
domyślną wartością parametru timeout jest 5.0 (pięć sekund). Nie musisz go określać podczas łączenia, ponieważ jest to wartość domyślna. np. za każdym razem, gdy łączysz się z SQLite z Pythona i nie otrzymałeś odpowiedzi w ciągu 5 sekund, twój program wywoła wyjątek. Ale jeśli masz problem z limitem czasu połączenia i chcesz go zwiększyć, możesz to zrobić za pomocą argumentu timeout funkcjisqlite3.connect
.
zobaczmy, jak zmienić wartość timeout podczas łączenia SQLite z poziomu Pythona.,
wyjście:
Connected to SQLiteTotal rows are: (2,)The Sqlite connection is closed
Zidentyfikuj całkowite zmiany od otwarcia połączenia z bazą danych SQLite
do celów audytu lub statystyki jeśli chcesz znaleźć numery wierszy bazy danych, które zostały zmodyfikowane, wstawione lub usunięte od otwarcia połączenia z bazą danych, możesz użyć metody connection.total_changes
Pythonowego modułu sqlite3.
metodaconnection.total_changes
zwraca całkowitą liczbę wierszy bazy danych, których to dotyczy. Zobaczmy przykład Pythona, aby znaleźć całkowite zmiany, które zostały dokonane od czasu otwarcia połączenia z bazą danych.,
Output:
Connected to SQLiteTotal Rows affected since the database connection was opened: 3sqlite connection is closed
wykonaj kopię zapasową bazy danych SQLite z poziomu Pythona
moduł Pythona sqlite3 zapewnia funkcję tworzenia kopii zapasowej bazy danych SQLite. Używając metody connection.backup()
możesz wykonać kopię zapasową bazy danych SQLite.
connection.backup(target, *, pages=0, progress=None, name="main", sleep=0.250)
Ta funkcja pobiera kopię zapasową bazy danych SQLite, a kopia zostanie zapisana do argumentu target, który musi być inną instancją połączenia., Domyślnie, lub gdy Strony mają wartość 0 lub ujemną liczbę całkowitą, cała baza danych jest kopiowana w jednym kroku; w przeciwnym razie metoda wykonuje pętlę kopiującą do stron na raz.
argument name określa bazę danych, którą chcesz skopiować. Argument sleep określa liczbę sekund do uśpienia pomiędzy kolejnymi próbami tworzenia kopii zapasowej pozostałych stron bazy danych. argument sleep może być podany jako liczba całkowita lub zmiennoprzecinkowa.
Pokaż przykład skopiowania istniejącej bazy danych do innej.,
Output:
Uwaga:
- po podłączeniu do SQLite otworzyliśmy obie bazy danych używając dwóch różnych połączeń.
- następnie wykonaliśmy metodę
connection.backup()
używając pierwszej instancji połączenia. Ponadto określiliśmy liczbę stron bazy danych do skopiowania w każdej iteracji.
Python SQLite Exercise Project
rozwiąż nasze ćwiczenie programowania baz danych w Pythonie, aby opanować programowanie baz danych w Pythonie.
Leave a Reply