Для приложения у меня есть страница routes.py
, определенная с помощью следующего кода:
#!/usr/bin/python3
from app import app
import ssl
import os
from flask import Flask
from flask import render_template
from flask import request
import json
from flask_sqlalchemy import SQLAlchemy
from app.models import Test
from sqlalchemy import exc
from app import db
@app.route("/", methods=["GET", "POST"])
def home():
if request.method == "POST":
results_received = request.get_json()
print ("Printing resuts")
print(results_received)
#get useragent, timestamp, test_run, test_type, domain_id, status
results_received=request.get_json()
for key, value in results_received.items():
test = Test(useragent = value[5], timestamp = value[2], test_run = value[0], test_type = value[3], domain_id = value[4], status = value[1])
print (test)
try:
db.session.add(test)
db.session.commit()
except exc.IntegrityError as e:
db.session().rollback()
print("Total tests")
tests = Test.query.all()
print (tests)
return render_template("index.html")
Когда загружается страница, размещенная на локальном хосте в index.html
, некоторые данные из javascript страницыполучил и передал в db
.Однако, когда я обновляю страницу и показываю итоговые тесты в конце, создается новая запись, которая заменяет более старую, вместо того, чтобы быть двумя записями / строками, так как при обновлении страницы отправляется новый json
, который должен создать новыйстрока.Я следовал учебному пособию по базе данных фляг над здесь , и у меня почти такая же структура, как в учебнике, за исключением того, что моя главная страница содержит код для HTTPS
.Я определяю db
внутри config.py
, используя следующий код:
#!/usr/bin/python3
from flask import Flask
from config import Config
from flask_sqlalchemy import SQLAlchemy
from flask_migrate import Migrate
app = Flask(__name__)
app.config.from_object(Config)
db = SQLAlchemy(app)
migrate = Migrate(app, db)
from app import routes, models
И, как и в учебнике, я создал исходную таблицу, используя flask db migrate -m "tests table"
Может кто-нибудь помочь сэта проблема.Насколько я понимаю, база данных должна создаваться только один раз, и каждый раз, когда я обновляю страницу, приложение должно получать новую серию данных и фиксировать в базе данных как новую строку вместо замены уже существующей.