簡體   English   中英

如何使用 webpy 將 MySQL 查詢格式化為 JSON?

[英]How to format a MySQL query into JSON using webpy?

我正在嘗試使用 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 字符串中?

您可以擴展 json.JSONEncoder 來處理日期:

我沒有使用存儲 object 作為參數對此進行測試,但是正如您所說,當查詢中沒有日期時它可以工作,我認為這應該可以工作。 (有關擴展編碼器對象的信息,請參閱 json 模塊文檔)。

import datetime, json

class ExtendedEncoder(json.JSONEncoder):

    def default(self, o):
        if isinstance(o, datetime.datetime):             
            # If it's a date, convert to a string
            # Replace this with whatever your preferred date format is
            return o.strftime("%Y-%m-%d %H:%M:%S")  

        # Defer to the superclass method
        return json.JSONEncoder(self, o)

那么,如果“結果”是你的存儲 object

json_string = json.dumps(result, cls=ExtendedEncoder)

嘗試將其轉換為 UNIX 時間戳:

import time
result.mytime = time.mktime(result.mytime.utctimetuple())

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM