通过烧瓶中的url将表名传递给sqlalchemy查询

时间:2014-06-12 05:55:49

标签: python flask sqlalchemy flask-sqlalchemy

简而言之,我该如何

 var="TableName"
 models.var.query.all()

解释
我的目标是允许用户更改项目列表的顺序。
我设置了一个ajax调用,它将一个id的数组发送到下面的api 如果我对查询进行硬编码,并且每个表都有一个api视图,它就可以工作 我的问题是我希望“表格”填写这一行

 models.table.query.filter_by(id=item).first() 

完成查询。

这里是视图api,它给出了一个错误“无属性'表'”

@app.route('/order/<table>')
def order(table):
    # import pdb;pdb.set_trace()
    sortedItems = request.args.listvalues()[0]
    o=1
    import pdb;pdb.set_trace()
    for item in sortedItems:
        grab = models.table.query.filter_by(id=item).first() 
        grab.order=o
        o=o+1
    db.session.commit()
    return jsonify(result=sortedItems)

1 个答案:

答案 0 :(得分:3)

您可以使用getattr()

>>> var = 'table_name'
>>> table = getattr(models, var)
>>> table.query.filter_by(id=item).first()
如果您尝试获取的属性不存在,则

getattr()会引发AttributeError

order() - 函数示例:

@app.route('/order/<table>')
def order(table):
    sortedItems = request.args.listvalues()[0]
    o=1
    table = getattr(models, table)
    for item in sortedItems:
        grab = table.query.filter_by(id=item).first() 
        grab.order=o
        o=o+1
    db.session.commit()
    return jsonify(result=sortedItems)
相关问题