Flask-SQLAlchemy: como inserir ou atualizar uma linha condicionalmente

Meu aplicativo usa uma combinação de Flask, Flask-SQLAlchemy, Flask-WTF e Jinja2.

Na sua encarnação atual, eu tenho uma tabela de configurações. A tabela terá apenas um registro com um campo. Inicialmente, a tabela contém zero registros.

O que eu quero alcançar é:

Dado que não existem entradas no banco de dados, mostre o formulário vazio pronto para entrada do usuárioDado que existe uma entrada, mostre a entrada ese o usuário alterar o valor, atualize o rec em db.

Aqui está o meu código:

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)

Tal como está, este código cria um registro, se não existir, mas orssfeed coluna está vazia.

Como posso alterar este código para que ele sejaINSERT se o registro não existe eUPDATE se isso acontecer?

questionAnswers(2)

yourAnswerToTheQuestion