python 数据库查询序列化_python-将sqlalchemy类序列化为json
我正在嘗試將sqlalchemy查詢的結果(列表)序列化為json.
這是課程:
class Wikilink(Base):
__tablename__='Wikilinks'
__table_args__={'extend_existing':True}
id = Column(Integer,autoincrement=True,primary_key=True)
title = Column(Unicode(350))
user_ip = Column(String(50))
page = Column(String(20))
revision = Column(String(20))
timestamp = Column(String(50))
我想我的問題是__repr __(self):函數.
我嘗試了類似的東西:
return '{{0}:{"title":{1}, "Ip":{2}, "page":{3} ,"revision":{4}}}'.format(self.id,self.title.encode('utf-8'),self.user_ip,self.page,self.revision)
要么:
return '{"id"={0}, "title"={1}, "Ip"={2}}'.format(self.id,self.title.encode('utf-8'),self.user_ip.encode('utf-8'),self.page,self.revision)
我得到:
TypeError(repr(o) + " is not JSON serializable")
ValueError: Single '}' encountered in format string
我試過了:
return '{id=%d, title=%s, Ip=%s}'%(self.id,self.title.encode('utf-8'),self.user_ip.encode('utf-8'))
我得到:
TypeError: {id=8126, title=1 ??????, Ip=147.237.70.106} is not JSON serializable
像這樣(根據JSON格式)在周圍添加“”:“ id” =“%d”,“ title” =“%s”,“ Ip” =“%s”也不起作用.
我知道這簡直太簡單了,但是我做對了
實際上bottle是自動處理jsonification部分,但是嘗試在結果上調用json.dumps會給我同樣的錯誤.
解決方法:
您可以定義自己的to_dict方法,而不是嘗試將字符串轉換為json,該方法返回似乎要嘗試創建的字典結構,然后從該結構生成json:
>>> import json
>>> d = {'id':8126, 'title':u'1 ??????', 'ip':'147.237.70.106'}
>>> json.dumps(d)
'{"ip": "147.237.70.106", "id": 8126, "title": "1 \\u05d1\\u05d3\\u05e6\\u05de\\u05d1\\u05e8"}'
標簽:sqlalchemy,json,python
來源: https://codeday.me/bug/20191101/1985295.html
總結
以上是生活随笔為你收集整理的python 数据库查询序列化_python-将sqlalchemy类序列化为json的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 里写注释 postman_没用过这些ID
- 下一篇: 实验一基于 的词法分析实验_[源码和文档