减少Flask和Flask-SQLAlchemy中重复的代码

时间:2013-02-19 16:40:32

标签: python flask flask-sqlalchemy

我正在使用Flask-SQLAlchemy,我有一个包含各种表和关系的数据库。我希望用户能够在表中创建一个条目,如(类别)编辑表中的条目并查看该表中的所有条目。

所以我有两个类别和修订版。类别只有一个名称,修订版有一个名称和版本。

我要添加和编辑的代码是:

分类

def addCategory(name):
    cat = models.Category(name=name)
    db.session.add(cat)
    try:
        db.session.commit()
    except sqlalchemy.exc.IntegrityError:
        print "adding a row that violates the unique constraint"

修订

def addRevision(name, version):
    cat = models.Revision(name=name, version=version)
    db.session.add(cat)

    try:
        db.session.commit()
    except sqlalchemy.exc.IntegrityError:
        print "adding a row that violates the unique constraint"

分类

def editCategory(name, newName):
    cat = models.Category.query.filter_by(name=name).first()
    if cat:
        cat.name = newName
        db.session.add(cat)
        try:
            db.session.commit()
            return True
        except sqlalchemy.exc.IntegrityError:
            print "That Category already exists"
    return False

修订

def editRevision(name, version, newName, newVersion):
    rev = models.Revision.query.filter_by(name=name, version=version).first()
    if rev:
        rev.name = newName
        rev.version = newVersion
        db.session.add(rev)
        try:
            db.session.commit()
            return True
        except sqlalchemy.exc.IntegrityError:
            print "That Revision already exists"
    return False

我的模板也一样。查看所有类别与查看所有修订非常相似。添加修订与添加类别类似。等

1 个答案:

答案 0 :(得分:1)

Pluggable views可以帮助您减少复制的代码。