如何使用 webpy 将 MySQL 查询格式化为 JSON?
我正在尝试使用 webpy 查询 MySQL 数据库。从 SQL 查询中,我得到以下信息。
<Storage {'title': u'Learn web.py', 'done': 0, 'id': 0L, 'mytime': datetime.datetime(2011, 5, 30, 10, 53, 9)}>
我尝试使用 json.dumps(data)
将数据序列化为 JSON 格式,但是收到一条错误消息,指示数据不可序列化。
我可能可以迭代每个键值对并将其放入另一个字典中,但这似乎工作量太大。
关于最佳方法有什么建议吗?
编辑: 我认为我的问题是因为数据中有 datetime.datetime(2011, 5, 30, 10, 53, 9)
。我从数据库中删除了 mytime
列,一切正常。有没有办法将 mytime
列包含到 JSON 字符串中?
I am trying to query a MySQL database using webpy. From the SQL query, I get the following.
<Storage {'title': u'Learn web.py', 'done': 0, 'id': 0L, 'mytime': datetime.datetime(2011, 5, 30, 10, 53, 9)}>
I tried to serialize the data using json.dumps(data)
into JSON format, however I get an error indicating that the data is not serializable.
I could probably iterate through each key value pair and put it into another dictionary however that seems like too much work.
Any suggestions on best approaches?
Edit:
I think my problem is because I have datetime.datetime(2011, 5, 30, 10, 53, 9)
in the data. I removed the mytime
column from the database and everything worked. Is there a way to include the mytime
column into the JSON string?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您可以扩展 json.JSONEncoder 来处理日期:
我还没有使用 Storage 对象作为参数对此进行测试,但正如您所说,当查询中没有日期时它可以工作,我认为这应该可以工作。 (有关扩展编码器对象的信息,请参阅 json 模块 docs )。
那么,如果“结果”是你的存储对象
You can extend json.JSONEncoder to handle dates:
I've not tested this using the Storage object as an argument, but as you say it works when there's no date in the query, I think this should work. (See the json module docs for information about extending the encoder object).
Then, if "result" is your storage object
尝试将其转换为 UNIX 时间戳:
Try converting it into a UNIX timestamp: