2016-03-01 53 views
1

我使用的串行jsonpickle當我全選到數據庫,我要列出對象轉換爲JSON時使用jsonpickle爲了這個,我得到這個輸出:如何在sqlalchemy中序列化列表對象?

代碼:

Session = sessionmaker(bind=connect.ConnectorMySql()) 
        ses = Session() 
        lst = ses.query(pModel).all() 
        return lst 

jsonpickle:

serialized_obj = jsonpickle.encode(lst[0]) 

輸出:

{"py/object": "Models.UserModel.", "sa_instance_state": {"py/object": "sqlalchemy.orm.state.InstanceState", "py/state": {"instance": {"py/id": 0}, "committed_state": {}, "class": {"py/type": "Models.UserModel."}, "manager": {"py/object": "sqlalchemy.orm.instrumentation.SerializeManager", "class": {"py/type": "Models.UserModel.Student"}}, "key": {"py/tuple": [{"py/type": "Models.UserModel.Student"}, {"py/tuple": [1]}]}, "expired_attributes": {"py/set": []}}}, "name": "ramin", "fullname": "eee", "password": "1234345", "id": 1} 

但我需要這種格式json:

{"name": "ramin", "fullname": "eee", "password": "1234345", "id": 1} 

你覺得這個工作更好嗎?

+0

可以請你發佈你的代碼嗎? – NiviD

+0

好的,請再看一遍 –

回答

0

這不是​​的用途。 pickle和​​用於將任意Python對象序列化爲某種格式,以便稍後可以反序列化爲完全相同的Python對象。它們不用於根據特定模式對對象進行序列化。

對於您的情況,您必須自己編寫序列化邏輯。例如:

obj = lst[0] 
serialized_obj = {k: getattr(obj, k) for k in ["name", "fullname", "password", "id"]} 

您還必須處理任何特殊類型。您甚至可以看中並嘗試自動反映模型上的列。

順便說一句,密碼存儲在我看到的明文嗎?

+0

感謝您的回答,不,這是一個示例:))), –