仅在数据库中附加新项目

时间:2016-10-14 22:44:12

标签: python database syntax sqlalchemy

我有一张名为classes的表格 哪个有字段:

course name
 times_mentioned

所以我想做的就是。首先将course_nametimes_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()

这是有效的方法吗?

1 个答案:

答案 0 :(得分:0)

1-更改times_mentionedinteger

的类型

2-使用count func来检查实例是否存在,如果是这样增加counter,否则创建一个新的

def AddCourseName(coursename):
    if db.session.query(popular_courses.id).filter(popular_courses.nam‌​e==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"