sqlalchemy用变量填充查询的一部分

时间:2017-01-18 13:58:10

标签: python flask sqlalchemy

我想修改 users.query.all() 以获得类似 db_table.query.all() 的内容。我该如何编辑这部分?

def test(db_table):
    all = db_table.query.all()
    print (all)
    return 'ok'

我以这种方式运行文件:

python my-script.py [users]

在文件中,函数将以这种方式调用:

if __name__ == '__main__':
    application.run(test(sys.argv[0]), debug=True)

通过运行上面的代码,我将面临这个错误:

all = db_table.query.all() AttributeError: 'str' object has no attribute 'query'

我想将表名作为参数传递给test函数,然后将其放入查询中。

1 个答案:

答案 0 :(得分:1)

将参数传递给脚本时,您将在示例中获得一个值,它是一个字符串值。但是你需要一个物体。您可以定义一个函数并检查字符串值是否与您的模型名称相同,然后返回该对象:

class User(db.Model):
    ...

def get_model(arg):
    if arg == 'users':
        return User
    return False

def test(db_table):
    db_table = get_model(db_table)
    if db_table:
        all = db_table.query.all()
        print (all)
        return 'ok'