Flask-SQLAlchemy: Bedingtes Einfügen oder Aktualisieren einer Zeile

Meine Anwendung verwendet eine Kombination aus Flask, Flask-SQLAlchemy, Flask-WTF und Jinja2.

In seiner aktuellen Inkarnation habe ich eine Einstellungstabelle. Die Tabelle enthält nur einen Datensatz mit einem Feld. Zu Beginn enthält die Tabelle keine Datensätze.

Was ich erreichen möchte, ist:

Wenn in db keine Einträge vorhanden sind, zeigen Sie ein leeres Formular an, das für Benutzereingaben bereit istWenn ein Eintrag vorhanden ist, zeigen Sie den Eintrag an, undWenn der Benutzer den Wert ändert, aktualisieren Sie die Aufzeichnung in db.

Hier ist mein Code:

models.py

class Provider(db.Model):
    id = db.Column(db.Integer, primary_key = True)
    rssfeed = db.Column(db.String(120), unique = True)

    def __init__(self, rssfeed):
        self.rssfeed = rssfeed

    def __repr__(self):
        return '<NZBMatrix feed url %r>' % self.rssfeed

forms.py

class SettingsForm(Form):
    rssfeed = TextField('rssfed', validators= [Required()])

views.py

    @app.route('/settings', methods=["GET","POST"])
    def settings():
    """ show settings """
        provider = Provider.query.get(1)
        form = SettingsForm(obj=provider)
        print provider

        if request.method == "POST" and form.validate():
            if Provider.query.get(1) is None:
                provider = Provider(rssfeed=form.rssfeed.data)
                form.populate_obj(provider)
                db.session.add(provider)
                db.session.commit()
                flash("Settings added")

        return render_template("settings.html", form=form)

In der jetzigen Form erstellt dieser Code einen Datensatz, wenn er nicht existiert, sondern denrssfeed Spalte ist leer.

Wie kann ich diesen Code ändern, damit es wirdINSERT wenn der Datensatz nicht existiert undUPDATE wenn doch?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage