Я пытаюсь внести статьи в базу данных. Это работало нормально, но я заметил, что он будет вводить дубликаты тех же статей. Я хотел проверить, есть ли статья в базе данных, прежде чем вводить ее снова, поэтому я добавил следующие строки:
maybe_existing_article = Article.query.filter_by(url())
if (maybe_existing_article):
article = maybe_existing_article.url
return "exists"
else:
Теперь я получаю "NameError: name 'article' is not определены ", хотя это глобальная статья, которая работала, пока я не начал пытаться проверить, есть ли она в базе данных. Я никогда не делал этого раньше, поэтому у меня такое чувство, что я, вероятно, делаю несколько вещей неправильно, но я не знаю что. Вот полный код:
class Article(db.Model):
# object mirrors table 'article'
id = db.Column('id', db.Integer, primary_key=True)
title = db.Column(db.String(400))
url = db.Column(db.String(400))
image_url = db.Column(db.String(400))
snippet = db.Column(db.String(1000))
date_upload = db.Column(db.DateTime(), default=datetime.utcnow)
def __init__(self, title, url, image_url, snippet):
self.title = title
self.url = url
self.image_url = image_url
self.snippet = snippet
##############################################
@app.route('/bootstrap', methods=['GET', 'POST'])
def bootstrap():
posted = 1
print ("bootstrap")
global article
if request.method == 'POST':
if not request.form['title'] or not request.form['url'] or not request.form['image_url'] or not request.form['snippet']:
flash('Please enter all the fields', 'error')
else:
maybe_existing_article = Article.query.filter_by(url())
if (maybe_existing_article):
article = maybe_existing_article.url
return "exists"
else:
article = Article(request.form['title'], request.form['url'], request.form['image_url'],
request.form['snippet'])
db.session.add(article)
try:
db.session.commit()
except exc.SQLAlchemyError:
flash('Article url already exists, failed to post new article')
posted = 0
#return render_template('/error.html', article_url=article.url)
article_list = Article.query.filter_by(url=article.url)
if posted == 1:
flash('Record was successfully added')
else:
db.session.rollback()
article_list = Article.query.filter_by(url=article.url)
article=article_list[0]
print ("article.id=" + str(article.id))
import json
print("a")
return json.dumps(article.id)
else:
print("article.id=" + str(article.id))
urlNumber = str(article.id)
message = {'greeting':urlNumber}
return jsonify(message) # serialize and use JSON headers