SQLALchemy 数据库两个相同的条目

SQLALchemy database two identical entries

我创建了一个电影数据库并在该数据库中添加了一个新条目。 起初 运行,代码在数据库中创建了两个相同的条目,我不知道为什么。

代码:

from flask import Flask, render_template, redirect, url_for, request
from flask_bootstrap import Bootstrap
from flask_sqlalchemy import SQLAlchemy

app = Flask(__name__)
app.config['SECRET_KEY'] = '8BYkEfBA6O6donzWlSihBXox7C0sKR6b'
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///day64.db'
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False

Bootstrap(app)

db = SQLAlchemy(app)

class Movie(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    title = db.Column(db.String(250), nullable=False)
    year = db.Column(db.Integer, nullable=False)
    description = db.Column(db.String(250), nullable=False)
    rating = db.Column(db.Float, nullable=False)
    ranking = db.Column(db.Integer, nullable=False)
    review = db.Column(db.String(250), nullable=False)
    img_url = db.Column(db.String(250), nullable=False)
db.create_all()

@app.route("/")
def home():
    return render_template("index.html")

if __name__ == '__main__':
    new_movie = Movie(
        title="Phone Booth",
        year=2002,
        description="Publicist Stuart Shepard.",
        rating=7.3,
        ranking=10,
        review="My favourite.",
        img_url="https://image.tmdb.org/t/p/w500/tjrX2oWRCM3Tvarz38zlZM7Uc10.jpg"
    )
    db.session.add(new_movie)
    db.session.commit()
    app.run(debug=True)

数据库条目: Movie table

看起来这是因为 flask 在调试模式下启动的方式。如果您将 use_reloader=False 添加到 app.run 可以解决您的问题,但您将无法实时重新加载。

app.run(debug=True, use_reloader=False)

最好重构它,将电影创作移出 init。

其他栈溢出相关question/answerhere