【问题标题】:Python, Pyodbc - encoding rows to jsonPython,Pyodbc - 将行编码为 json
【发布时间】:2014-10-21 09:05:32
【问题描述】:
class GetAdminAsJsonHandler(BaseHandler):
    def post(self):
        admin_guid = self.get_argument("admin_guid")
        if admin_guid == None:
            self.write("AdminGuid is missing.")
        else:
            database = self.connect_db()
            cursor = database.cursor()
            admins = cursor.execute("SELECT * FROM Admin").fetchall()
            self.disconnect_db()
            self.write(json_encode(admins)) # Error

嗨,我应该开发一个处理程序,当 AJAX 从 Web 请求时,它会返回数据库中的 json 编码管理员列表。使用 Pyodbc 并假设表列是 AdminGuid、ID 和 Name,我应该如何更正 #Error 部分以使其正常工作?

谢谢!!

*错误消息

[E 141021 02:22:47 web:1407] Uncaught exception POST /admin/get (::1)
    HTTPServerRequest(protocol='http', host='localhost:8000', method='POST', uri='/admin/get', version='HTTP/1.1', remote_ip='::1', headers={'Origin': 'http://localhost:8000', 'Content-Length': '12', 'Accept-Language': 'ko-KR,ko;q=0.8,en-US;q=0.6,en;q=0.4', 'Accept-Encoding': 'gzip,deflate', 'Host': 'localhost:8000', 'Accept': '*/*', 'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/38.0.2125.104 Safari/537.36', 'Connection': 'keep-alive', 'X-Requested-With': 'XMLHttpRequest', 'Referer': 'http://localhost:8000/admin', 'Cookie': 'csrftoken=NUV1oVLBJ3jzzvuNio9Dv22k8qTt5TYW; install_421aa90e079fa326b6494f812ad13e79=bqgjn14u6t5sn3th0ccdnj6pr7', 'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8'})
    Traceback (most recent call last):
      File "C:\Python27\lib\site-packages\tornado\web.py", line 1332, in _execute
        result = method(*self.path_args, **self.path_kwargs)
      File "C:\Users\SANG MIN\Desktop\haundae\module\admin\handlers.py", line 34, in post
        admin_array = [a for r in admin] = {}
      File "C:\Python27\lib\site-packages\tornado\escape.py", line 88, in json_encode
        return json.dumps(value).replace("</", "<\\/")
      File "C:\Python27\lib\json\__init__.py", line 243, in dumps
        return _default_encoder.encode(obj)
      File "C:\Python27\lib\json\encoder.py", line 207, in encode
        chunks = self.iterencode(o, _one_shot=True)
      File "C:\Python27\lib\json\encoder.py", line 270, in iterencode
        return _iterencode(o, 0)
      File "C:\Python27\lib\json\encoder.py", line 184, in default
        raise TypeError(repr(o) + " is not JSON serializable")
    TypeError: ('admin', 'admin', '\xc3\xd6\xb0\xed\xbf\xee\xbf\xb5\xc1\xf8', True, True, 1) is not JSON serializable
[E 141021 02:22:47 web:1811] 500 POST /admin/get (::1) 1233.00ms

【问题讨论】:

  • 错误信息是什么?向我们展示整个追溯消息。
  • 添加了错误信息。 TypeError: ('admin', 'admin', '\xc3\xd6\xb0\xed\xbf\xee\xbf\xb5\xc1\xf8', True, True, 1) 不是 JSON 可序列化的。我猜它的格式不适合转换为 JSON

标签: python tornado pyodbc


【解决方案1】:

http://www.anthonydebarros.com/2012/03/11/generate-json-from-sql-using-python/

这就是我想要的。希望它可以帮助其他遇到同样麻烦的人

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-10-06
    • 1970-01-01
    • 2015-04-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-02
    相关资源
    最近更新 更多