Flask-SQLAlchemy: как условно вставить или обновить строку

Мое приложение использует комбинацию Flask, Flask-SQLAlchemy, Flask-WTF и Jinja2.

В его текущем воплощении у меня есть таблица настроек. В таблице будет только одна запись с одним полем. Первоначально таблица содержит ноль записей.

Чего я хочу достичь:

Given that no entries exist in db, then show empty form ready for user input Given that an entry exist, show the entry, and if the user changes the value, then update the rec in db.

Вот мой код:

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)

В нынешнем виде этот код создает запись, если она не существует, ноrssfeed столбец пуст.

Как я могу изменить этот код, чтобы онINSERT если запись не существует иUPDATE если это так?

Ответы на вопрос(2)

Ваш ответ на вопрос