Możemy wchodzić w interakcje z bazami danych za pomocą dowolnego języka programowania lub możemy użyć programu, który pozwala nam na interakcję z bazą danych za pomocą GUI. W tym artykule omówimy bazy danych i pokażemy, jak z nimi współdziałać za pomocą języka programowania Python.
Relacyjne bazy danych (SQL)
Relacyjne bazy danych (SQL) różnią się od nierelacyjnych baz danych (NoSQL) pod względem schematu. Schemat to szablon, który definiuje strukturę danych, które zamierzasz przechowywać. W relacyjnych bazach danych tworzymy tabele do przechowywania danych. Schemat tabeli jest definiowany podczas tworzenia tabeli. Na przykład, jeśli chcemy przechowywać dane o uczniach w relacyjnej bazie danych, utworzymy tabelę uczniów i zdefiniujemy schemat tabeli, który może zawierać imię i nazwisko, numer rejestracyjny, ocenę itp. każdego ucznia. Po utworzeniu schematu będziemy przechowywać dane w wierszach tabeli. Należy pamiętać, że nie możemy przechowywać danych, które nie są zdefiniowane w schemacie. W tym przykładzie ocena, którą uczeń otrzymał na egzaminie, nie może być przechowywana w tabeli, ponieważ nie zdefiniowaliśmy kolumny dla tych danych w schemacie.
Poniższa lista zawiera kilka popularnych relacyjnych baz danych:
- MariaDB
- MySQL
- Serwer SQL
- PostgreSQL
- Wyrocznia
Nierelacyjne bazy danych (NoSQL)
Jak omówiono powyżej, nierelacyjne bazy danych nie mają zdefiniowanego schematu. Nierelacyjne bazy danych zawierają kolekcje zamiast tabel, a te kolekcje zawierają dokumenty, które są równoważne wierszom w relacyjnej bazie danych. Na przykład, jeśli chcemy stworzyć nierelacyjną bazę danych do przechowywania danych uczniów, możemy stworzyć kolekcję użytkowników i w tej kolekcji będziemy przechowywać dokument dla każdego ucznia. Te dokumenty nie mają zdefiniowanego schematu i możesz przechowywać wszystko, co chcesz dla każdego ucznia.
Wykonywanie operacji CRUD w MySQL
Teraz pokażemy Ci, jak korzystać z MySQL za pomocą Pythona.
Instalowanie sterownika MySQL dla Pythona
Aby móc współpracować z MySQL za pomocą Pythona, najpierw musimy zainstalować sterownik MySQL w Pythonie.
[ochrona poczty e-mail]: ~ $ sudo pip3 zainstaluj mysql-connector-pythonlub
[ochrona poczty e-mail]:~$ sudo pip install mysql-connector-pythonTworzenie bazy danych
Przed utworzeniem bazy danych musimy połączyć się z serwerem MySQL za pomocą Pythona. mysql.Moduł connector oferuje metodę connect(), która pomaga nawiązać połączenie z MySQL za pomocą Pythona.
>>> importuj mysql.złącze//Zastąp własnym adresem IP i danymi uwierzytelniającymi serwer
>>> sql = mysql.złącze.połączyć(
… host='host lokalny',
… użytkownik='root',
… hasło='12345'
…)
>>> drukuj (sql)
Ten komunikat pokazuje, że pomyślnie utworzyliśmy połączenie z bazą danych MySQL za pomocą Pythona. Teraz uruchomimy zapytanie SQL na serwerze MySQL za pomocą metody execute() z mysql.moduł złącza.
>>> kursor = sql.kursor()>>> zapytanie = 'UTWÓRZ BAZĘ DANYCH demo_db'
>>> kursor.wykonaj (zapytanie)
Powyższy kod utworzy bazę danych o nazwie demo_db w MySQL.
Tworzenie tabeli
Teraz, gdy stworzyliśmy bazę danych, utworzymy nową tabelę o nazwie studenci. Aby utworzyć tabelę, musimy połączyć się z bazą danych.
>>> sql_db = mysql.złącze.połączyć(… host='host lokalny',
… użytkownik='root',
… hasło='12345',
… database='demo_db'
…)
Po połączeniu się z bazą danych użyjemy metody execute() do uruchomienia zapytania SQL w celu utworzenia tabeli ze schematem.
>>> query = "CREATE TABLE uczniowie(nazwa VARCHAR(64), id INT, ocena INT, data ur.)";>>> kursor.wykonaj(zapytanie);
Powyższe polecenie utworzy tabelę o nazwie studenci w bazie danych demo_db; w tabeli możemy wstawić tylko imię, id, klasę i datę urodzenia, zgodnie ze schematem.
Wstawianie wierszy do tabeli
Teraz, gdy stworzyliśmy tabelę, wstawimy do niej ucznia. Stworzymy zapytanie, a następnie użyjemy metody execute(), aby uruchomić zapytanie na serwerze MySQL za pomocą Pythona.
>>> query = 'INSERT INTO Student(name, id, grade, ur.) VALUES(“John”, 1, 3, “2020-07-04”)'>>> kursor.wykonaj (zapytanie)
>>> sql_db.popełnić()
To zapytanie doda do tabeli ucznia z danymi zdefiniowanymi w zapytaniu. W ten sam sposób możemy dodać dodatkowych uczniów do stołu.
UWAGA: Zmiany zostaną zastosowane do bazy danych tylko wtedy, gdy uruchomisz sql_db.commit() po zastosowaniu zmian.
Wybieranie wierszy z tabeli
Instrukcja SELECT w MySQL służy do zwracania danych z tabeli. Użyjemy metody execute() do uruchomienia zapytania, a następnie użyjemy metody fetchall(), aby uzyskać listę wszystkich uczniów. Następnie możemy użyć pętli for, aby wyświetlić wszystkich uczniów
>>> zapytanie = 'WYBIERZ * OD uczniów'>>> kursor.wykonaj (zapytanie)
>>> wynik = kursor.pobierz()
>>> dla x w wyniku:
… drukuj(x)
(„Jan”, 1, 3, data i godzina.data(2020, 7, 4))
Widzimy, że zwracane są tylko dane dla jednego ucznia, ponieważ w tabeli mamy tylko jednego ucznia. Możemy użyć instrukcji WHERE w MySQL z instrukcją SELECT, aby określić ograniczenia. Na przykład, jeśli chcemy zwrócić uczniów tylko do klasy 4, możemy użyć następującego zapytania:
>>> query = 'SELECT * FROM uczniów WHERE klasa = 4'>>> kursor.wykonaj (zapytanie)
>>> wynik = kursor.pobierz()
>>> dla x w wyniku:
… drukuj(x)
Powyższy kod pobierze tylko uczniów z klasy 4.
Aktualizacja wiersza
W tej sekcji pokażemy, jak zaktualizować dane uczniów w tabeli MySQL za pomocą Pythona. Użyjemy instrukcji UPDATE z instrukcjami WHERE i SET w MySQL, aby zaktualizować dane konkretnych uczniów. Instrukcja WHERE służy do określenia, które wiersze zostaną zaktualizowane, a instrukcja SET służy do zdefiniowania wartości używanych do aktualizacji.
>>> query = 'UPDATE studenci SET name="Mark" WHERE id = 4'>>> kursor.wykonaj (zapytanie)
>>> sql_db.popełnić()
Teraz spróbujemy odczytać dane uczniów z tabeli za pomocą instrukcji SELECT.
>>> query = 'SELECT * FROM Student WHERE id=4'>>> kursor.wykonaj (zapytanie)
>>> dla x w kursorze:
… drukuj(x)
('Mark', 4, 4, data i godzina.data(2020, 7, 15))
Teraz widzimy, że imię ucznia o id 4 zostało zmienione na Mark.
Usuwanie wiersza
Możemy usunąć wiersz z tabeli, stosując instrukcję DELETE w MySQL za pomocą Pythona. Użyjemy instrukcji DELETE z instrukcją WHERE, aby usunąć określonych uczniów z tabeli.
>>> query = 'DELETE FROM Students WHERE id=2'>>> kursor.wykonaj (zapytanie)
>>> sql_db.popełnić()
Teraz możemy zwrócić wszystkich uczniów z tabeli za pomocą instrukcji SELECT.
>>> zapytanie = 'WYBIERZ * OD uczniów'>>> kursor.wykonaj (zapytanie)
>>> dla x w kursorze:
… drukuj(x)
(„Jan”, 1, 3, data i godzina.data(2020, 7, 4))
(„Jan”, 3, 3, data i godzina.data(2020, 7, 8))
('Mark', 4, 4, data i godzina.data(2020, 7, 15))
Widzimy, że w tabeli nie ma ucznia o identyfikatorze 2, ponieważ usunęliśmy ucznia z tabeli.
Upuszczanie stołu
mysql.moduł złącza może być również używany do upuszczania stołu. Możemy wykonać instrukcję DROP w MySQL za pomocą metody execute().
>>> kursor = sql_db.kursor()>>> zapytanie = 'UPUŚĆ UCZNIÓW TABELI'
>>> kursor.wykonaj (zapytanie)
Powyższy kod usunie tabelę o nazwie studenci po wykonaniu w Pythonie.
To kończy naszą dyskusję na temat baz danych SQL. Pokazaliśmy, jak zastosować różne zapytania do bazy danych MySQL za pomocą Pythona. Następnie zastosujemy operacje CRUD do bazy danych NoSQL o nazwie MongoDB
Wykonywanie operacji CRUD w MongoDB
Aby móc współpracować z MongoDB za pomocą Pythona, musimy najpierw zainstalować pymongo, który jest sterownikiem MongoDB dla Pythona.
[ochrona poczty e-mail]: ~ $ sudo pip zainstaluj pymongolub
[ochrona poczty e-mail]: ~ $ sudo pip3 zainstaluj pymongoTworzenie bazy danych
Możemy połączyć się z MongoDB za pomocą metody MongoClient() modułu pymongo w MongoDB. Przed wykonaniem jakichkolwiek czynności musimy połączyć się z bazą danych MongoDB.
>>> importuj pymongo>>> klient = pymongo.MongoClient('mongodb://localhost:27017/')
Po połączeniu się ze skrzynką danych możemy wykonać następujący wiersz, aby utworzyć nową bazę danych o nazwie demo_db.
>>> baza = klient['demo_db']Jeśli baza danych już istnieje, to polecenie jest ignorowane.
Tworzenie kolekcji
Po utworzeniu bazy danych utworzymy kolekcję o nazwie studenci w bazie danych o nazwie.
>>> importuj pymongo>>> klient = pymongo.MongoClient('mongodb://localhost:27017/')
>>> baza = klient['demo_db']
>>> kol = db['studenci']
UWAGA: MongoDB nie tworzy kolekcji, dopóki nie wprowadzisz do niej danych. Dlatego jeśli spróbujesz uzyskać dostęp do kolekcji po uruchomieniu powyższego kodu, zobaczysz, że w bazie danych nic nie ma.
MySQL bez podszewki, nie musimy definiować schematu podczas tworzenia nowej kolekcji, ponieważ MongoDB jest nierelacyjną bazą danych.
Wstawianie dokumentu
Po utworzeniu kolekcji możemy wstawić dokument do wnętrza kolekcji. Najpierw musimy zdefiniować słownik, a następnie za pomocą metody insert_one() możemy wstawić dane zdefiniowane w słowniku do kolekcji.
UWAGA: MongoDB automatycznie tworzy unikalny „_id” dla każdego dokumentu; dlatego nie musimy podawać identyfikatora.
>>> dane =… "imię": "Jan",
… "ocena 3,
… "ur.": "2020-04-03"
…
>>> wynik = kol.wstaw_jeden (dane)
W powyższym dokumencie wstawiliśmy imię i nazwisko, stopień i dob. Teraz wstawimy dokument do kolekcji studentów, który ma pole na wiek.
>>> dane =… „imię” : „Znak”,
… "stopień 4,
… "ur.": "2020-04-09",
… "wiek" : 8
…
>>> wynik = kol.wstaw_jeden (dane)
Widzimy, że to polecenie nie powoduje błędu. Ponieważ MongoDB jest nierelacyjną bazą danych, możemy dodać do dokumentu dowolne informacje.
Pobieranie dokumentów
W tej sekcji użyjemy metod find() i find_one() do pobrania danych z bazy danych. Metoda find() przyjmuje dwa argumenty: pierwszy służy do filtrowania dokumentów, a drugi służy do definiowania pól dokumentu, który chcemy zwrócić. Na przykład, jeśli chcemy uzyskać identyfikator „Jan”, możemy uruchomić następujące zapytanie:
>>> wynik = kol.find("name": "Jan", "_id": 1)>>> dla x w wyniku:
… drukuj(x)
'_id': ObjectId('5f8f0514cb12c01f7420656e')
Alternatywnie możemy pobrać wszystkie dokumenty z kolekcji za pomocą następującego zapytania:
>>> wynik = kol.odnaleźć()>>> dla x w wyniku:
… drukuj(x)
'_id': ObjectId('5f8f0514cb12c01f7420656e'), 'imię': 'Jan', 'klasa': 3, 'ur.': '2020-04-03'
'_id': ObjectId('5f8f061ccb12c01f7420656f'), 'name': 'Mark', 'grade': 4, 'data ur.': '2020-04-09', 'wiek': 8
Aktualizacja dokumentów
Moduł pymongo oferuje metody update_one() i update_many() do aktualizowania dokumentów w kolekcji. Obie metody przyjmują dwa argumenty: pierwszy określa, który dokument należy zmienić, a drugi określa nowe wartości. Teraz zmienimy ocenę ucznia „Znak”.
>>> zapytanie = "nazwa": "Znak">>> wartość = "$set": "ocena": 5
>>> kolor.update_one(zapytanie, wartość)
>>> dla x w kol.odnaleźć():
… drukuj(x)
'_id': ObjectId('5f8f0514cb12c01f7420656e'), 'imię': 'Jan', 'klasa': 3, 'ur.': '2020-04-03'
'_id': ObjectId('5f8f061ccb12c01f7420656f'), 'name': 'Mark', 'grade': 5, 'db': '2020-04-09', 'wiek': 8
Usuwanie dokumentu
Moduł pymongo w Pythonie ma dwie metody, i.mi., delete_one() i delete_many(), do usuwania dokumentów. Obie metody przyjmują argument, który wybiera dokument do usunięcia. Za pomocą poniższego kodu usuniemy ucznia o imieniu „Jan”.
>>> zapytanie = "imię": "Jan">>> kolor.usuń_jeden(zapytanie)
>>> dla x w kol.odnaleźć():
… drukuj(x)
'_id': ObjectId('5f8f061ccb12c01f7420656f'), 'name': 'Mark', 'id': 2, 'grade': 5, 'docb': '2020-04-09', 'wiek': 8
Upuszczenie kolekcji
Możemy upuścić kolekcję w MongoDB za pomocą metody drop() modułu pymongo w Pythonie. Najpierw musimy połączyć się z bazą danych; następnie wybieramy bazę danych zawierającą kolekcję, którą chcemy usunąć. Po wybraniu kolekcji z bazy możemy ją usunąć za pomocą metody drop(). Poniższy kod wyrzuci uczniów.
>>> importuj pymongo>>> klient = pymongo.MongoClient('mongodb://localhost:27017/')
>>> baza = klient['demo_db']
>>> kol = db['studenci']
>>> kolor.upuszczać()
Wniosek
Znajomość baz danych jest niezbędna, jeśli chcesz stworzyć aplikację internetową. Prawie każdy język programowania ma frameworki i biblioteki do tworzenia backendowych stron internetowych. Python może być używany w backendowym tworzeniu stron internetowych, dzięki czemu możemy wchodzić w interakcje z bazami danych za pomocą Pythona podczas pracy z backendowymi frameworkami Pythona. W tym artykule pokazaliśmy, jak współdziałać z bazami danych MongoDB i MySQL za pomocą prostych operacji CRUD napisanych w Pythonie.