[Python] Webanwendung von 0! Hands-on (4) -Datenformung-

Überblick

Ich hatte die Möglichkeit, mit Python eine Web-App von Grund auf neu zu erstellen, also als Zusammenfassung! In diesem Artikel geht es um die Gestaltung der aus der Datenbank erhaltenen Daten. Wenn die von der API zurückgegebenen Daten nicht einheitlich sind, sind Front-End-Ingenieure in Schwierigkeiten! Dieses Mal werde ich erklären, wie Daten in einem einheitlichen Datenformat namens json zurückgegeben werden!

Artikel bisher [Python] Webanwendung von 0! Hands-on (0) ~ Umweltkonstruktion --- Qiita [Python] Webanwendung von 0! Hands-on (1) -Design, DB-Konstruktion- --Qiita [Python] Webanwendung von 0! Hands-on (2) - Hallo Welt - Qiita [Python] Webanwendung von 0! Hands-on (3) ~ API-Implementierung ~ --Qiita

Ich möchte, dass diese Person liest

Tor

Ziel ist es, eine Web-App mit CURD-Funktionalität unter Verwendung von HTML, CSS, JavaScript, Python und SQL zu erstellen.

Dinge notwendig

1. Ordnerstruktur

Die diesmal erstellten Ordner und Dateien lauten wie folgt.

todo/  └ api/   ├ index.py   └ Todo.py

2. Konvertieren Sie die aus der Datenbank abgerufenen Daten in ein Klassenobjekt

Konvertieren Sie zunächst die aus der Datenbank erhaltenen Daten in ein Klassenobjekt, um die programmgesteuerte Verarbeitung zu vereinfachen. Seit Python 3.7 gibt es eine Funktion namens Datenklassen, die das Definieren von Klassen erleichtert. Datenklassen --- Datenklassen - Python 3.8.5-Dokumentation

Führen Sie zunächst den folgenden Befehl an der Eingabeaufforderung aus.

cmd


pip install dataclasses

Erstellen Sie als Nächstes eine neue Datei mit dem Namen Todo.py im API-Ordner.

Todo.py


from dataclasses import dataclass

@dataclass
class Todo:
    id: str
    title: str
    created: str
    is_deleted: str

Ändern Sie dann index.py.

index.py


# -*- coding:utf-8 -*-

#Laden Sie ein externes Paket
from bottle import route, run
import psycopg2
from Todo import Todo #Das Laden der oben erstellten Todo-Klasse wurde hinzugefügt

#Stellen Sie eine Verbindung zur Datenbank her
def get_connection():
    return psycopg2.connect("host=localhost port=5432 dbname=TodoDatabase user=postgres password=postgres")

#Holen Sie sich Todo-Daten
@route('/todos')
def get_todos():
    #Stellen Sie eine Verbindung mit der Datenbank her
    with get_connection() as conn:
        #Cursor generieren
        with conn.cursor() as cur:
            #Führen Sie SQL aus
            cur.execute('SELECT * FROM todo')
            
            #Holen Sie sich 1 Abfrageergebnis in die Datenbank
            data = cur.fetchone()
            
            #Konvertieren Sie die von der Datenbank erfassten Daten in ein Klassenobjekt (erstellen Sie eine Todo-Klasseninstanz) und geben Sie sie zurück
            todo = Todo(data[0], data[1], data[2], data[3])
            return str(todo)


#Konfiguration der Webserverausführung
#URL"http://[host]:[port]/[route]"Wird die Zusammensetzung von
run(host='localhost', port=8080, debug=True)

Gehen Sie an der Eingabeaufforderung zum Stammordner der App, führen Sie python index.py aus, um den Server zu starten, und greifen Sie mit einem Browser auf http: // localhost: 8080 / todos zu. Die folgenden Daten werden angezeigt Ich denke. 2020-08-28_10h47_51.png

2. Konvertieren Sie das Klassenobjekt in das JSON-Format

Lassen Sie es uns in das JSON-Format des Hauptthemas konvertieren.

Von Datenklassen generierte Klassen können mithilfe von dataclasses_json problemlos in das JSON-Format konvertiert werden. GitHub - lidatong/dataclasses-json: Easily serialize Data Classes to and from JSON

Führen Sie den folgenden Befehl an der Eingabeaufforderung aus.

pip install dataclasses-json

Edit Todo.py. Importieren Sie zusätzliche dataclasses_json und fügen Sie die Annotation dataclass_json hinzu.

Todo.py


from dataclasses import dataclass
from dataclasses_json import dataclass_json #hinzufügen

@dataclass_json #hinzufügen
@dataclass
class Todo:
    id: str
    title: str
    created: str
    is_deleted: str

Bearbeiten Sie dann index.py wie folgt.

index.py


# -*- coding:utf-8 -*-

#Laden Sie ein externes Paket
from bottle import route, run, response #Antwort hinzugefügt
import psycopg2
from Todo import Todo
import json #hinzufügen

#Stellen Sie eine Verbindung zur Datenbank her
def get_connection():
    return psycopg2.connect("host=localhost port=5432 dbname=TodoDatabase user=postgres password=postgres")

#Holen Sie sich Todo-Daten
@route('/todos')
def get_todos():
    #Ändern Sie das Antwortdatenformat in json
    response.headers['Content-Type'] = 'application/json'
    response.headers['Cache-Control'] = 'no-cache'

    #Stellen Sie eine Verbindung mit der Datenbank her
    with get_connection() as conn:
        #Cursor generieren
        with conn.cursor() as cur:
            #Führen Sie SQL aus
            cur.execute('SELECT * FROM todo')
            
            #Holen Sie sich 1 Abfrageergebnis in die Datenbank
            data = cur.fetchone()

            #Konvertieren Sie die von DB erfassten Daten in json und geben Sie sie zurück
            #Erstellungsdatum und -zeit (Daten)[2]) In String-Typ umwandeln
            # "ensure_ascii=False"Wenn Sie keine Nicht-ASCII-Zeichen angeben"\uXXXX"Japanisch kann nicht zurückgegeben werden, da es in Form von maskiert ist
            #Klassifizieren Sie die Daten in der Datenbank (Todo()) → Wörterbuchtyp (.__dict__)→json(json.dumps)Muss konvertiert werden zu
            todo = Todo(data[0], data[1], str(data[2]), data[3])
            return json.dumps(todo.__dict__, ensure_ascii=False)

#Konfiguration der Webserverausführung
#URL"http://[host]:[port]/[route]"Wird die Zusammensetzung von
run(host='localhost', port=8080, debug=True)

Wenn ich python index.py erneut starte, um den Server zu starten und mit einem Browser auf http: // localhost: 8080 / todos zuzugreifen, wird es jetzt so zurückgegeben! 2020-08-28_11h34_40.png Durch die Rückgabe jedes Datenelements als Satz von Schlüsselwerten auf diese Weise wurde die Handhabung am Frontend sehr einfach. Es ist auch sehr einfach zu schreiben, wenn ein Front-End-Ingenieur nach einer API-Spezifikation fragt!

Bonus

Übrigens wurde bestätigt, dass der Browser mit Google Chrome funktioniert, aber er hat eine Erweiterung, die Daten im JSON-Format formatiert. Es ist praktisch, weil es farbig sein kann und das Panel geöffnet und geschlossen werden kann. Probieren Sie es also aus! JSON Formatter --Chrome Webstore

Zusammenfassung

Wir haben die Rest-API implementiert, die Datenbankdaten im JSON-Format zurückgibt!

nächstes Mal···

Bisher habe ich die URL direkt eingegeben, um auf die API zuzugreifen, aber jetzt möchte ich eine Seite erstellen. Nächstes Mal werde ich HTML erstellen und über JavaScript-Code darauf zugreifen!

Recommended Posts

[Python] Webanwendung von 0! Hands-on (4) -Datenformung-
[Python] Webanwendung von 0! Hands-on (2) -Hallo Welt-
[Python] Webanwendung von 0! Hands-on (3) -API-Implementierung-
[Python] Webanwendung von 0! Hands-on (0) -Umweltbau-
[Python] Webanwendung von 0! Hands-on (1) -Design, DB-Konstruktion-
Python: Lesen von JSON-Daten von der Web-API
[Python] Fluss vom Web-Scraping zur Datenanalyse
Extrahieren Sie mit Python Daten von einer Webseite
Datenerfassung von der Analytics-API mit dem Google API-Client für die Python Part 2-Webanwendung
Python-Anwendung: Datenvisualisierung # 2: matplotlib
Webanwendung mit Python + Flask ② ③
Webanwendung mit Python + Flask ④
Python: Tags von HTML-Daten ausschließen
Anwendung von Python: Datenbereinigung Teil 1: Python-Notation
Hit Schatzdaten von Python Pandas
Python-Anwendung: Datenverarbeitung # 3: Datenformat
Python-Anwendung: Datenvisualisierung Teil 1: Grundlegend
Anwendung von Python: Datenbereinigung Teil 2: Datenbereinigung mit DataFrame
Entwicklung einer WEB-Anwendung mit Django [Daten vom Verwaltungsbildschirm hinzufügen]
Eine Geschichte über alles von der Datenerfassung über die KI-Entwicklung bis hin zur Veröffentlichung von Webanwendungen in Python (3. KI-Entwicklung)
Empfangen Sie Textdaten von MySQL mit Python
[Hinweis] Mit Python Daten von PostgreSQL abrufen
Verwenden Sie den PostgreSQL-Datentyp (jsonb) von Python
[Python] Eine schnelle Webanwendung mit Bottle!
[Python] Webanwendungsdesign für maschinelles Lernen
Führen Sie eine Python-Webanwendung mit Docker aus
Holen Sie sich mit Python Zeitreihendaten von k-db.com
Führen Sie Python-Skripte in C # -GUI-Anwendungen aus
So öffnen Sie einen Webbrowser über Python
Datenanalyse Python
[Python] Lesen von Daten aus CIFAR-10 und CIFAR-100
SQL zu SQL
MeCab von Python
Anwendung von Python: Datenverarbeitung Teil 2: Analyse verschiedener Datenformate
Holen Sie sich nur Artikel von Webseiten in Python
[Python] Daten lesen
Trends für das Webanwendungs-Framework 2014 (PHP / Java / Ruby / Python / Perl)
Datenanalyse zur Verbesserung von POG 1 ~ Web Scraping mit Python ~
Empfangen Sie Wörterbuchdaten von Python-Programmen mit AppleScript
(Python) Versuchen Sie, eine Webanwendung mit Django zu entwickeln
Holen Sie sich mit Python Daten vom GPS-Modul mit 10 Hz
Starten Sie mit Docker eine Python-Webanwendung auf Nginx + Gunicorn
Senden Sie Daten von Python über die Socket-Kommunikation an Processing
Webanwendung erstellt mit Python3.4 + Django (Teil.1 Umgebungskonstruktion)
[Grundlagen der Datenwissenschaft] Sammeln von Daten aus RSS mit Python
Abrufen von Daten aus der Datenbank über ODBC mit Python (Access)
Generieren Sie Word Cloud aus Testfalldaten mit Python3
Verwenden Sie thingspeak aus Python
Datenanalyse mit Python 2
Berühren Sie MySQL in Python 3
Django Python Web Framework
Bedienen Sie Filemaker von Python aus
Verwenden Sie fließend Python
Daten aus S3 extrahieren
Python-Datenvisualisierungsbibliotheken
Änderungen von Python 2 zu Python 3.0
Datenanalyse Übersicht Python
Python aus oder importieren