2014-02-17 120 views
1

我有一个sqlalchemy映射类,我想将其转换为python字典,目的是通过jsonify从瓶中返回对象。换句话说,我想弄死在下面的代码的to_map功能:将类转换为字典

def to_map(user): 
    m = {} 
    m['id'] = user.id 
    m['name'] = user.name 
    return m 

@app.route("/users.json") 
def some_route_function() 
    users = [to_map(user) for user in User.query.all()] 
    return flask.jsonify({'users': users}) 

回答

2

一个快速班轮将

{ key: getattr(user, key) for key in dir(user) if not key.startswith('_') } 

公约/假设,其中一期工程是什么开始下划线是私人的。

1

有一个在SQLAlchemy的车型__table__ class属性,你可以使用它:

[{c.name: getattr(user, c.name) for c in User.__table__.columns} 
           for user in User.query.all()] 
+0

我的答案是基于我知道,因为我从来没有使用SQLAlchemy的Python的,但你可能是为更好的工具在眼前。 –