arrow_back

Tworzenie aplikacji: przechowywanie danych aplikacji w Cloud Datastore – Python

Test and share your knowledge with our community!
done
Get access to over 700 hands-on labs, skill badges, and courses

Tworzenie aplikacji: przechowywanie danych aplikacji w Cloud Datastore – Python

Lab 50 godz. universal_currency_alt Punkty: 5 show_chart Średnio zaawansowany
Test and share your knowledge with our community!
done
Get access to over 700 hands-on labs, skill badges, and courses

GSP184

Moduły Google Cloud do samodzielnego ukończenia

Opis

Google Cloud Datastore to magazyn danych dokumentów NoSQL zaprojektowany pod kątem automatycznego skalowania, wysokiej wydajności i łatwego tworzenia aplikacji. W tym module skorzystasz z magazynu danych Datastore do przechowania danych internetowej aplikacji quizu. Skonfigurujesz też aplikację, aby pobierała dane z Datastore i wyświetlała je w quizie.

Szkielet aplikacji quizu został już napisany. Sklonujesz repozytorium zawierające ten szkielet przy użyciu Google Cloud Shell, sprawdzisz kod w edytorze Cloud Shell i wyświetlisz go za pomocą funkcji podglądu w przeglądarce. Następnie zmodyfikujesz kod, aby dane były przechowywane w Cloud Datastore.

Cele

W tym module:

  • poznasz środowisko programistyczne Cloud Shell;
  • wyświetlisz podgląd aplikacji;
  • zaktualizujesz kod aplikacji, aby zintegrować ją z Cloud Datastore.

Konfiguracja i wymagania

Zanim klikniesz przycisk Rozpocznij moduł

Zapoznaj się z tymi instrukcjami. Moduły mają limit czasowy i nie można ich zatrzymać. Gdy klikniesz Rozpocznij moduł, na liczniku wyświetli się informacja o tym, na jak długo udostępniamy Ci zasoby Google Cloud.

W tym praktycznym module możesz spróbować swoich sił w wykonywaniu opisywanych działań w prawdziwym środowisku chmury, a nie w jego symulacji lub wersji demonstracyjnej. Otrzymasz nowe, tymczasowe dane logowania, dzięki którym zalogujesz się i uzyskasz dostęp do Google Cloud na czas trwania modułu.

Do ukończenia modułu potrzebne będą:

  • dostęp do standardowej przeglądarki internetowej (zalecamy korzystanie z przeglądarki Chrome).
Uwaga: uruchom ten moduł w oknie incognito lub przeglądania prywatnego. Dzięki temu unikniesz konfliktu między swoim kontem osobistym a kontem do nauki, co mogłoby spowodować naliczanie oddatkowych opłat na koncie osobistym.
  • Odpowiednia ilość czasu na ukończenie modułu – pamiętaj, że gdy rozpoczniesz, nie możesz go wstrzymać.
Uwaga: jeśli masz już osobiste konto lub projekt w Google Cloud, nie używaj go w tym module, aby uniknąć naliczania opłat na koncie.

Rozpoczynanie modułu i logowanie się w konsoli Google Cloud

  1. Kliknij przycisk Rozpocznij moduł. Jeśli moduł jest odpłatny, otworzy się wyskakujące okienko, w którym możesz wybrać formę płatności. Po lewej stronie znajduje się panel Szczegóły modułu z następującymi elementami:

    • przyciskiem Otwórz konsolę Google;
    • czasem, który Ci pozostał;
    • tymczasowymi danymi logowania, których musisz użyć w tym module;
    • innymi informacjami potrzebnymi do ukończenia modułu.
  2. Kliknij Otwórz konsolę Google. Moduł uruchomi zasoby, po czym otworzy nową kartę ze stroną logowania.

    Wskazówka: otwórz karty obok siebie w osobnych oknach.

    Uwaga: jeśli pojawi się okno Wybierz konto, kliknij Użyj innego konta.
  3. W razie potrzeby skopiuj nazwę użytkownika z panelu Szczegóły modułu i wklej ją w oknie logowania. Kliknij Dalej.

  4. Skopiuj hasło z panelu Szczegóły modułu i wklej je w oknie powitania. Kliknij Dalej.

    Ważne: musisz użyć danych logowania z panelu po lewej stronie, a nie danych logowania Google Cloud Skills Boost. Uwaga: korzystanie z własnego konta Google Cloud w tym module może wiązać się z dodatkowymi opłatami.
  5. Na kolejnych stronach wykonaj następujące czynności:

    • Zaakceptuj Warunki korzystania z usługi.
    • Nie dodawaj opcji odzyskiwania ani uwierzytelniania dwuskładnikowego (ponieważ konto ma charakter tymczasowy).
    • Nie rejestruj się w bezpłatnych wersjach próbnych.

Poczekaj, aż na karcie otworzy się konsola Google Cloud.

Uwaga: aby wyświetlić menu z listą produktów i usług Google Cloud Console, w lewym górnym rogu kliknij menu nawigacyjne. Ikona menu nawigacyjnego

Aktywowanie Cloud Shell

Cloud Shell to maszyna wirtualna oferująca wiele narzędzi dla programistów. Zawiera stały katalog domowy o pojemności 5 GB i działa w Google Cloud. Dzięki wierszowi poleceń Cloud Shell zyskujesz dostęp do swoich zasobów Google Cloud.

  1. Kliknij Aktywuj Cloud Shell Ikona aktywowania Cloud Shell na górze konsoli Google Cloud.

Po połączeniu użytkownik od razu jest uwierzytelniony. Uruchomi się Twój projekt o identyfikatorze PROJECT_ID. Dane wyjściowe zawierają wiersz z zadeklarowanym identyfikatorem PROJECT_ID dla tej sesji:

Your Cloud Platform project in this session is set to YOUR_PROJECT_ID

gcloud to narzędzie wiersza poleceń Google Cloud. Jest ono już zainstalowane w Cloud Shell i obsługuje funkcję autouzupełniania po naciśnięciu tabulatora.

  1. (Opcjonalnie) Aby wyświetlić listę aktywnych kont, użyj tego polecenia:
gcloud auth list
  1. Kliknij Autoryzuj.

  2. Dane wyjściowe powinny wyglądać tak:

Dane wyjściowe:

ACTIVE: * ACCOUNT: student-01-xxxxxxxxxxxx@qwiklabs.net To set the active account, run: $ gcloud config set account `ACCOUNT`
  1. (Opcjonalnie) Aby wyświetlić identyfikator projektu, użyj tego polecenia:
gcloud config list project

Dane wyjściowe:

[core] project = <project_ID>

Przykładowe dane wyjściowe:

[core] project = qwiklabs-gcp-44776a13dea667a6 Uwaga: pełną dokumentację gcloud w Google Cloud znajdziesz w opisie narzędzia wiersza poleceń gcloud.

Uruchamianie edytora kodu Cloud Shell

  • W Cloud Shell kliknij ikonę Otwórz edytor, aby uruchomić edytor kodu. Być może trzeba będzie też kliknąć Otwórz w nowym oknie.

Przycisk „Otwórz edytor”.

Uwaga: edytor kodu uruchomi się w osobnej karcie przeglądarki.

Zadanie 1. Tworzenie środowiska wirtualnego

  1. Kliknij ikonę Otwórz terminal.

Do oddzielenia instalacji pakietów od systemu są używane wirtualne środowiska języka Python.

virtualenv -p python3 vrenv
  1. Aktywuj środowisko wirtualne:
source vrenv/bin/activate

Zadanie 2. Przygotowywanie aplikacji quizu

Repozytorium zawierające aplikację quizu znajduje się na stronie GitHub.com. W tej sekcji sklonujesz repozytorium i uruchomisz aplikację za pomocą poleceń Cloud Shell.

Klonowanie kodu źródłowego w Cloud Shell

  • Sklonuj repozytorium na potrzeby wykonania ćwiczenia:
git clone https://github.com/GoogleCloudPlatform/training-data-analyst

Konfigurowanie i uruchamianie aplikacji quizu

  1. Zmień katalog roboczy:

    cd ~/training-data-analyst/courses/developingapps/python/datastore/start
  2. Wyeksportuj zmienną środowiskową GCLOUD_PROJECT odwołującą się do identyfikatora projektu:

    export GCLOUD_PROJECT=$DEVSHELL_PROJECT_ID Zwróć uwagę na identyfikator projektu w Cloud Shell.

    Podczas pracy w Cloud Shell będziesz mieć dostęp do identyfikatora projektu w zmiennej środowiskowej `$DEVSHELL_PROJECT_ID`.
  3. Zainstaluj zależności aplikacji i zignoruj ostrzeżenia o braku zgodności:

    pip install -r requirements.txt
  4. Uruchom aplikację:

    python run_server.py

    Po uruchomieniu aplikacji zobaczysz komunikat podobny do tego:

    * Running on http://127.0.0.1:8080/ (Press CTRL+C to quit) * Restarting with stat * Debugger is active! * Debugger PIN: 179-313-240

Sprawdzanie aplikacji quizu

  1. W Cloud Shell kliknij Podgląd w przeglądarce > Podejrzyj na porcie 8080, aby wyświetlić podgląd aplikacji quizu.

    Opcja „Podejrzyj na porcie 8080” zaznaczona w menu podglądu w przeglądarce.

    Powinien pojawić się interfejs aplikacji internetowej. 3 główne części aplikacji to:

    • Create Question
    • Take Test
    • Leaderboard

    Strona „Welcome to the Quite Interesting Quiz” z 3 częściami: Create Question, Take Test i Leaderboard.

  2. Na pasku nawigacyjnym kliknij Create Question.

    Zobaczysz prosty formularz zawierający pola tekstowe dla pytania i odpowiedzi z przyciskami umożliwiającymi wybór poprawnej odpowiedzi.

    Uwaga: w tej części aplikacji autorzy quizów mogą dodawać pytania. Ta część aplikacji została napisana jako aplikacja internetowa po stronie serwera za pomocą popularnej platformy Flask, która służy do tworzenia aplikacji internetowych w języku Python.
  3. Na pasku nawigacyjnym kliknij Take Test, a następnie GCP, aby uzyskać dostęp do pytań dotyczących Google Cloud.

    Zobaczysz przykładowe pytanie.

    Szablon z przykładowym pytaniem oraz odpowiedziami i przyciskiem „Submit Answer”.

    W tej części aplikacji osoby, które przystąpiły do rozwiązania quizu, odpowiadają na pytania.

    Uwaga: ta część aplikacji jest napisana jako aplikacja internetowa po stronie klienta.
  4. Aby powrócić do aplikacji po stronie serwera, na pasku nawigacyjnym kliknij link Quite Interesting Quiz.

Zadanie 3. Sprawdzanie kodu aplikacji quizu

W tym module będziesz wyświetlać i edytować pliki. W tym celu możesz skorzystać z edytorów powłoki, które są zainstalowane w Cloud Shell, takich jak nano lub vim. Możesz też użyć edytora kodu Cloud Shell.

W tym module do sprawdzenia kodu aplikacji quizu użyjemy edytora kodu Cloud Shell.

Sprawdzanie aplikacji internetowej utworzonej przy użyciu platformy Flask

  1. Za pomocą panelu przeglądarki plików znajdującego się po lewej stronie edytora przejdź do folderu /training-data-analyst/courses/developingapps/python/datastore/start.
Uwaga: ścieżki będą wyświetlane względem tego folderu. Masz do czynienia ze standardową aplikacją w języku Python napisaną przy użyciu popularnej platformy Flask.
  1. Wybierz plik ...run_server.py.

    Ten plik zawiera punkt wejścia aplikacji i uruchamia ją na porcie 8080.

  2. Wybierz plik ...quiz/_init_.py.

    Ten plik importuje trasy aplikacji internetowej i interfejsu API REST.

  3. Wybierz pliki ...quiz/webapp/questions.py...quiz/webapp/routes.py.

    Te pliki zawierają trasy mapujące identyfikatory URI na elementy obsługi, które wyświetlają formularz i zbierają dane formularza opublikowane przez autorów quizu w aplikacji internetowej.

  4. Wybierz folder ...quiz/webapp/templates.

    W tym folderze znajdują się szablony interfejsu aplikacji internetowej. Są to szablony Jinja2.

  5. Wyświetl plik ...quiz/webapp/templates/add.html.

    Ten plik zawiera szablon Jinja2 dla formularza tworzenia pytań.

    Zwróć uwagę, że znajduje się tu lista umożliwiająca wybór quizu, pola tekstowe, do których autor może wprowadzić pytanie i odpowiedzi, oraz przyciski umożliwiające wybranie poprawnej odpowiedzi.

  6. Wybierz plik ...quiz/api/api.py.

    Ten plik zawiera element obsługi, który wysyła dane JSON do osób rozwiązujących test.

  7. Wybierz plik ...quiz/gcp/datastore.py.

    W tym pliku można pisać kod Datastore umożliwiający zapisywanie pytań quizu w magazynie Cloud Datastore oraz wczytywanie ich stamtąd z powrotem.

Ten moduł zostanie zaimportowany do aplikacji internetowej i interfejsu API.

Zadanie 4. Dodawanie encji do Cloud Datastore

W tej sekcji napiszesz kod zapisujący dane formularza w Cloud Datastore.

Uwaga: zaktualizuj kod w sekcjach oznaczonych w następujący sposób:

# TODO

# END TODO

Aby zmaksymalizować efekty nauki, spróbuj napisać kod samodzielnie, bez patrzenia na gotowy blok kodu umieszczony na końcu tej sekcji. Dodatkowo przejrzyj kod, komentarze w tekście i powiązaną dokumentację interfejsu API Cloud Datastore.

Tworzenie aplikacji App Engine na potrzeby współpracy z Cloud Datastore

  1. Wróć do Cloud Shell i zatrzymaj aplikację, naciskając Ctrl + C.

  2. Aby utworzyć aplikację App Engine w projekcie, wpisz następujące polecenie:

    gcloud app create --region "{{{project_0.startup_script.app_region | REGION }}}"

Po utworzeniu aplikacji App Engine zobaczysz następujący komunikat:

Creating App Engine application in project [qwiklabs-gcp-f67238775c00cfaa] and region {{{project_0.startup_script.app_region | REGION}}}....done. Success! The app is now created. Please use `gcloud app deploy` to deploy your first app. Uwaga: jeszcze nie korzystasz z App Engine na potrzeby aplikacji internetowej. Jednak Cloud Datastore wymaga utworzenia aplikacji App Engine w projekcie.

Kliknij Sprawdź postępy poniżej, aby zobaczyć postęp pracy z modułem.

Utworzenie aplikacji App Engine

Importowanie i używanie modułu Datastore w języku Python

  1. Otwórz plik ...quiz/gcp/datastore.py w edytorze Cloud Shell i dodaj znajdujący się poniżej zaktualizowany kod datastore.py, aby wykonać następujące zadania:

  2. Zaimportowanie modułu os.

  3. Uzyskanie zmiennej środowiskowej GCLOUD_PROJECT za pomocą modułu os.

  4. Zaimportowanie modułu datastore z pakietu google.cloud.

  5. Zadeklarowanie obiektu klienckiego datastore.Client o nazwie datastore_client.

Zaktualizowany plik datastore.py

# TODO: Import the os module import os # END TODO # TODO: Get the GCLOUD_PROJECT environment variable project_id = os.getenv('GCLOUD_PROJECT') # END TODO from flask import current_app # TODO: Import the datastore module from the google.cloud package from google.cloud import datastore # END TODO # TODO: Create a Cloud Datastore client object # The datastore client object requires the Project ID. # Pass through the Project ID you looked up from the # environment variable earlier datastore_client = datastore.Client(project_id) # END TODO

Pisanie kodu tworzącego encję Cloud Datastore

  1. Będąc w ...quiz/gcp/datastore.py, przejdź do funkcji save_question() i usuń istniejącą instrukcję zastępczą pass. Dodaj podany poniżej kod z pliku datastore.py dla funkcji save_question(), aby wykonać następujące czynności:
  • Utworzenie za pomocą obiektu klienckiego Datastore klucza typu 'Question' (Pytanie) dla encji Datastore.
  • Użycie Datastore w celu utworzenia encji pytania Datastore za pomocą klucza.
  • Wykonanie iteracji na elementach słownika wartości dostarczonych za pomocą formularza aplikacji internetowej.
  • Przypisanie poszczególnych kluczy i wartości w treści pętli do obiektu encji Datastore.
  • Zapisanie danych za pomocą klienta Datastore.

datastore.py – funkcja save_question()

""" Create and persist and entity for each question The Datastore key is the equivalent of a primary key in a relational database. There are two main ways of writing a key: 1. Specify the kind, and let Datastore generate a unique numeric id 2. Specify the kind and a unique string id """ def save_question(question): # TODO: Create a key for a Datastore entity # whose kind is Question key = datastore_client.key('Question') # END TODO # TODO: Create a Datastore entity object using the key q_entity = datastore.Entity(key=key) # END TODO # TODO: Iterate over the form values supplied to the function for q_prop, q_val in question.items(): # END TODO # TODO: Assign each key and value to the Datastore entity q_entity[q_prop] = q_val # END TODO # TODO: Save the entity datastore_client.put(q_entity) # END TODO
  1. Zapisz plik datastore.py.

Uruchamianie aplikacji i tworzenie encji Cloud Datastore

  1. Zapisz plik ...quiz/gcp/datastore.py, a następnie powróć do znaku zachęty Cloud Shell.
  2. Aby uruchomić aplikację, wpisz następujące polecenie:
python run_server.py
  1. Cloud Shell kliknij Podgląd w przeglądarce > Podejrzyj na porcie 8080, aby wyświetlić podgląd aplikacji quizu.
  2. Kliknij Create question.
  3. Wypełnij formularz następującymi wartościami, a następnie kliknij Zapisz.

Pole formularza

Wartość

Autor

Twoje imię i nazwisko

Test

Google Cloud Platform

Tytuł

Jak nazywa się firma, do której należy Google Cloud?

Answer 1

Amazon

Answer 2

Google (wybierz przycisk odpowiedzi 2)

Answer 3

IBM

Answer 4

Microsoft

Powinien nastąpić powrót do strony głównej aplikacji.

  1. Powróć do konsoli i kliknij Menu nawigacyjne > Datastore.
  2. Wybierz domyślną bazę danych i kliknij Encje.

Zobaczysz swoje nowe pytanie.

Kliknij Sprawdź postępy poniżej, aby zobaczyć postęp pracy z modułem.

Utworzenie encji Cloud Datastore

Pobieranie encji Cloud Datastore

W tej sekcji napiszesz kod pobierający dane encji z Cloud Datastore w celu wyświetlenia pytania w aplikacji.

Pisanie kodu pobierającego encje Cloud Datastore

  1. W edytorze kodu, w pliku ...quiz/gcp/datastore.py usuń kod z funkcji list_entities(quiz, redact) i zastąp go zapytaniem, które:
  • Pobiera z Cloud Datastore encje Question dla konkretnego quizu.
  • Za pomocą klienta Datastore pobiera zapytanie i tworzy listę na podstawie zwróconych danych.
  • Wylicza listę elementów i promuje poszczególne identyfikatory kluczy encji do właściwości najwyższego poziomu.
  • Zwraca wyniki.
  1. Zastąp ten kod:
""" Returns a list of question entities for a given quiz - filter by quiz name, defaulting to gcp - no paging - add in the entity key as the id property - if redact is true, remove the correctAnswer property from each entity """ def list_entities(quiz='gcp', redact=True): return [{'quiz':'gcp', 'title':'Sample question', 'answer1': 'A', 'answer2': 'B', 'answer3': 'C', 'answer4': 'D', 'correctAnswer': 1, 'author': 'Nigel'}] """

Następującym kodem:

""" Returns a list of question entities for a given quiz - filter by quiz name, defaulting to gcp - no paging - add in the entity key as the id property - if redact is true, remove the correctAnswer property from each entity """ def list_entities(quiz='gcp', redact=True): query = datastore_client.query(kind='Question') query.add_filter('quiz', '=', quiz) results =list(query.fetch()) for result in results: result['id'] = result.key.id if redact: for result in results: del result['correctAnswer'] return results """
  1. Zapisz plik datastore.py.

Uruchamianie aplikacji i testowanie zapytania do Cloud Datastore

Teraz sprawdzisz, czy Twoje pytanie jest pobierane z Datastore i ładowane do aplikacji quizu.

  1. W Cloud Shell naciśnij Ctrl + C, aby zatrzymać aplikację, a następnie uruchom ją ponownie, wpisując:
python run_server.py
  1. Wyświetl podgląd quizu: jeśli przeglądarka, w której działa quiz, jest nadal otwarta, załaduj ją ponownie. W przeciwnym razie kliknij Podgląd w przeglądarce > Podejrzyj na porcie 8080.

  2. Kliknij Take Test > GCP.

Zobaczysz utworzone pytania.

Pytanie w quizie wraz z listą możliwych odpowiedzi i przyciskiem „Submit Answer”.

Gratulacje!

To już koniec modułu do samodzielnego ukończenia o nazwie „Tworzenie aplikacji: przechowywanie danych aplikacji w Cloud Datastore – Python”. Dane internetowej aplikacji quizu zostały zapisane w magazynie danych Datastore. Udało Ci się też skonfigurować aplikację do pobierania danych i wyświetlania ich w quizie.

Ukończ kurs

Ten moduł do samodzielnego ukończenia jest częścią kursu Application Development - Python. Każdy kurs składa się z zestawu powiązanych ze sobą modułów, które razem tworzą ścieżkę szkoleniową. Za ukończenie kursu otrzymujesz odznakę – stanowi ona potwierdzenie Twojego osiągnięcia. Swoje odznaki możesz ustawiać jako widoczne publicznie, a także podać do nich linki w swoim CV lub w mediach społecznościowych. Zarejestruj się na ten kurs lub dowolny kurs zawierający ten moduł, a zostanie on automatycznie zaliczony. Wszystkie dostępne kursy znajdziesz w katalogu Google Cloud Skills Boost.

Kolejne kroki / Więcej informacji

Ostatnia aktualizacja instrukcji: 16 października 2023 r.

Ostatni test modułu: 18 października 2023 r.

Copyright 2024 Google LLC. Wszelkie prawa zastrzeżone. Google i logo Google są znakami towarowymi Google LLC. Wszelkie inne nazwy firm i produktów mogą być znakami towarowymi odpowiednich podmiotów, z którymi są powiązane.