Pyton

Operacje CRUD na bazach danych SQL i NoSQL przy użyciu Pythona

Operacje CRUD na bazach danych SQL i NoSQL przy użyciu Pythona
Istnieją dwa główne typy baz danych, których można używać z aplikacją: relacyjne bazy danych (SQL) i nierelacyjne bazy danych (NoSQL). Oba są szeroko stosowane, ale wybór jednego zależy od rodzaju danych, które będą przechowywane. Istnieją cztery podstawowe operacje, które można wykonać na bazach danych: tworzenie, odczyt, aktualizacja i usuwanie (CRUD).

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:

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-python

lub

[ochrona poczty e-mail]:~$ sudo pip install mysql-connector-python

Tworzenie 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 pymongo

lub

[ochrona poczty e-mail]: ~ $ sudo pip3 zainstaluj pymongo

Tworzenie 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.

How to change Left & Right mouse buttons on Windows 10 PC
It's quite a norm that all computer mouse devices are ergonomically designed for right-handed users. But there are mouse devices available which are s...
Emulate Mouse clicks by hovering using Clickless Mouse in Windows 10
Using a mouse or keyboard in the wrong posture of excessive usage can result in a lot of health issues, including strain, carpal tunnel syndrome, and ...
Add Mouse gestures to Windows 10 using these free tools
In recent years computers and operating systems have greatly evolved. There was a time when users had to use commands to navigate through file manager...