Nachdem ich samstags und sonntags studiert hatte, machte ich ein kleines Lesebuch. Klicken Sie hier für den Bildschirm.
Sie müssen lediglich die Bücher registrieren, die Sie gelesen haben, und die Liste der registrierten Bücher anzeigen.
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.
・ 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.
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