对于一个应用程序,我有一个使用以下代码定义的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
新的一行。我在here之前遵循了flask数据库教程,除了我的主页包含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"
任何人都可以帮助解决这个问题。据我了解,数据库只能创建一次,并且每次刷新页面时,应用程序应该接收一系列新数据,并将其作为新行提交到数据库,而不是替换已经存在的数据。>