[PYTHON] Erstellt ein Lesebuch mit PostgreSQL mit Flask

Einführung

Nachdem ich samstags und sonntags studiert hatte, machte ich ein kleines Lesebuch. Klicken Sie hier für den Bildschirm. 画面.png

Sie müssen lediglich die Bücher registrieren, die Sie gelesen haben, und die Liste der registrierten Bücher anzeigen.

Quellcode

Der Quellcode lautet wie folgt. Ich werde das HTML weglassen, weil es so ist, wie Sie es sehen.

app.py


from flask import Flask, render_template,url_for,request,redirect
from sqlalchemy import create_engine
import pandas
import psycopg2

'''
Referenzierte Site
https://tanuhack.com/pandas-postgres-readto/

'''

#PostgreSQL-Verbindungsinformationen
connection_config = {
    'user': 'user',
    'password': 'password',
    'host': 'localhost',
    'port': '5432',
    'database': 'mydb'
}

#DB-Verbindung mit psycopg2
connection = psycopg2.connect(**connection_config)

#Erstellen von df
df = pandas.read_sql(sql='SELECT * FROM books;', con=connection) 
header = ['id','Buchtitel','Autor','Lesedatum','Auswertung']
record = df.values.tolist() #Eine Liste zweidimensionaler Arrays aller Datensätze ohne den DataFrame-Index

app = Flask(__name__)

@app.route('/')
def index():
    #SELECT-Anweisungsaktualisierung von DB bei jedem Lesen des Index
    df = pandas.read_sql(sql='SELECT * FROM books;', con=connection) 
    record = df.values.tolist()
    return render_template('index.html',  header=header, record=record)

@app.route('/result', methods=['GET','POST'])
def addition():
    if request.method == "POST":
        #Die Anzahl der Datensätze muss erneut erfasst werden
        df = pandas.read_sql(sql='SELECT * FROM books;', con=connection) 
        record = df.values.tolist() 

        #Ermitteln Sie den Wert der INSERT-Anweisung basierend auf dem Inhalt von POST. ID ist die aktuelle Anzahl der Datensätze+1
        book_id = len(record)+1
        res1 = request.form['Buchtitel']
        res2 = request.form['Autor']
        res3 = request.form['Lesedatum']
        res4 = request.form['Auswertung']
        dict1={'id':[book_id],'name':[res1],'writer':[res2],'read_day':[res3],'rank':[res4]}

        #SQL Alchemy erforderlich, um zur DB zu fliegen
        engine = create_engine('postgresql://{user}:{password}@{host}:{port}/{database}'.format(**connection_config))
        df = pandas.DataFrame(data=dict1)
        df.to_sql('books', con=engine, if_exists='append', index=False)
        return redirect(url_for('index'))

##Magie
if __name__ == "__main__":
    app.run(debug=True)

Zur Übersicht gibt es eine Tabelle mit Büchern, die in PostgreSQL gelesen wurden. Die von der SELECT-Anweisung als DataFrame erfassten Inhalte werden aufgelistet und mit render_template an index.html gesendet, um als "Bücher, die Sie lesen" angezeigt zu werden. Anschließend wird die Registrierung des von Ihnen gelesenen Buches als POST-Methode verarbeitet, indem die Informationen in das Eingabeformular eingegeben und die Registrierungstaste gedrückt werden. Der ID wird automatisch die neueste Nummer zugewiesen, die anderen werden aus dem Eingabeformular abgerufen und eine Zeile mit Wörterbuchtypdaten wird erstellt. Konvertieren Sie abschließend die Daten des Wörterbuchtyps in DataFrame und überspringen Sie die INSERT-Anweisung mit df.to_sql in die Datenbank, um die Daten hinzuzufügen.

Aufgabe

・ Konnte nicht bereitgestellt werden Ich habe versucht, Heroku zu verwenden, aber das eingesetzte hat nicht gut angefangen und ich habe aufgegeben. Die Ursache ist nicht klar, aber ich denke, ich hätte virtualenv verwenden sollen, da es von dem, was ich in der Rohumgebung getan habe, beeinflusst zu sein schien.

・ Unzureichende Funktion Wie Sie sehen können, können nur Daten hinzugefügt werden. Wenn Sie die Registrierungsinformationen ändern oder löschen möchten, müssen Sie an der Eingabeaufforderung direkt zur Datenbank wechseln.

Für die Zukunft

Vorläufig konnte ich die Datenbank und die Webseite (Erfassung aus der Datenbank und Hinzufügung zur Datenbank), die ich mindestens durchführen wollte, verknüpfen, daher werde ich darauf eingehen. Als nächstes habe ich mich nicht entschieden, ob ich das Lesebuch neu erstellen oder ein anderes erstellen möchte, aber ich würde es gerne mit einem Erstellungsstil tun, bei dem virtualenv verwendet und schrittweise für Heroku bereitgestellt wird.

Recommended Posts

Erstellt ein Lesebuch mit PostgreSQL mit Flask
Spiralbuch in Python! Python mit einem Spiralbuch! (Kapitel 14 ~)
Ich möchte mit einem Knopf am Kolben übergehen
"Ein Buch, das Flask von Grund auf versteht" Memo lesen
Versuchen Sie, Python in der mit pipenv erstellten Django-Umgebung auszuführen
Ich habe eine einfache Buch-App mit Python + Flask ~ Introduction ~ erstellt
Flask-Erstellen Sie eine Todo-Liste mit CSRF-Maßnahmen mit WTF mit Flask
Lassen Sie uns eine WEB-Anwendung für das Telefonbuch mit Flasche Teil 1 erstellen
Ein Zahnarzt (!?) Erstellt eine App zur Beurteilung der Zungenmoosmenge mit Flasche + Keras
Lassen Sie uns eine WEB-Anwendung für das Telefonbuch mit Flasche Teil 2 erstellen
Lassen Sie uns eine WEB-Anwendung für das Telefonbuch mit Flasche Teil 3 erstellen
Lassen Sie uns eine WEB-Anwendung für das Telefonbuch mit Flasche Teil 4 erstellen
Erstellen Sie mit Flask einen CSV-Reader
Erstellen eines Flask-Servers mit Docker
[DSU] Lesen der AtCoder-Bibliothek mit Green Coder ~ Implementierung in Python ~
Ich war festgefahren, eine Kolbenanwendung mit einem Reverse-Proxy dazwischen umzuleiten
Erstellen Sie mit dem Python-Anforderungsmodul einen Datensatz mit Anhängen in KINTONE
Zeichne mit PyCall ein Herz in Ruby
Machen Sie einen seltenen Gacha-Simulator mit Flask
Erstellt eine Reise von Darts mit Python (Nachrichten)
Erstellen Sie eine einfache Web-App mit Flasche
Starten Sie eine Flask-App in Python Anywhere
Hinweise zum Aktivieren von PostgreSQL mit Django
Erstellen Sie einen Webdienst mit Docker + Flask
Ich habe ein Passwort-Tool in Python erstellt.
Flask-Erstellen Sie einen Webdienst mit SQLAlchemy + PostgreSQL
[Python] Erstellt eine Klasse, um mit pyaudio Sinuswellen im Hintergrund zu spielen