我有一张名为classes
的表格
哪个有字段:
course name
times_mentioned
所以我想做的就是。首先将course_name
和times_Mentioned
设置为null。
但是当我的网站中的用户选择一个类时,我只想添加该类名,并继续为特定类添加+1 times_mentioned
。
这是我到目前为止所拥有的
class popular_courses(db.Model):
id = db.Column(db.Integer,primary_key=True)
name = db.Column(db.String(80), unique=True, default=None)
times_mentioned =db.Column(db.String(80), default=None, unique=True)
def __repr__(self):
return '<Popular Courses %r>' % (self.name)
@app.route('/add/<coursename>')
def AddCourseName(coursename):
addPopularCourse = popular_courses(name=coursename, times_mentioned=##DONT KNOW THE SYNTAX)
因此,我希望每次用户访问/添加网址时都需要课程名称并添加+1。我该怎么办?我也不知道它的语法。
@ app.route(&#39; /添加/&#39)
def AddCourseName(coursename):
try:
addPopularCourse = popular_courses(name=coursename, times_mentioned=1)
db.session.add(addPopularCourse)
db.session.commit()
return "added! " + coursename + " to db"
except exc.SQLAlchemyError:
db.session.rollback()
user = popular_courses.query.filter_by(name=coursename).first()
user.name = coursename
user.times_mentioned += 1
db.session.commit()
这是有效的方法吗?
答案 0 :(得分:0)
1-更改times_mentioned
到integer
2-使用count
func来检查实例是否存在,如果是这样增加counter,否则创建一个新的
def AddCourseName(coursename):
if db.session.query(popular_courses.id).filter(popular_courses.name==coursename).count() > 0:
course = popular_courses.query.filter_by(name=coursename).first()
course.name = coursename
course.times_mentioned += 1
db.session.commit()
return "increased by 1! "
else:
addPopularCourse = popular_courses(name=coursename, times_mentioned=1)
db.session.add(addPopularCourse)
db.session.commit()
return "added! " + coursename + " to db"