2014-02-17 150 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的,但你可能是爲更好的工具在眼前。 –