标题说真的。调用MySQL数据库并获取一个数据类型,当我尝试jsonify时,它的播放效果不佳。它让我疯狂地试图将这个数据类型转换为可用于前端的东西。
我试过调用float,int等等。十进制类型仍然存在或者我得到编码错误:
UnicodeDecodeError: 'utf8' codec can't decode byte 0xf4 in position 1: invalid continuation byte
编辑:
sample query result:
(('Albania', '38521', '2011'), ('Algeria', '136964', '2011'), ('Antigua and Barbuda', '206', '2011'), ('Argentina', '86351', '2011'), ('Armenia', '3251', '2011'), ('Aruba', '11511', '2011'), ('Australia', '421690', '2011'), ('Azerbaijan', '31622', '2011'),
top line of query:
original:
SELECT s.country_area AS country, SUM(s.quantity) AS quantity, m.maxyear AS maxyear
v2:
SELECT s.country_area AS country, CAST(SUM(s.quantity) AS CHAR) AS quantity, m.maxyear AS maxyear
edit2:
v3:
SELECT s.country_area AS country, CAST(SUM(s.quantity) AS CHAR CHARACTER SET utf8) AS quantity, m.maxyear AS maxyear
当我在对象上使用json.dumps时,原始获取十进制错误 v2获取utf-8编码错误.. v2仍然得到utf-8编码错误..
答案 0 :(得分:-1)
问题可能是由 country_area 字段中突出显示的字符引起的。
如果从SQL结果中获取字节字符串,则必须使用表的编码对其进行解码。
默认情况下,MySQL使用latin1_swedish_ci => ISO-8859-1 charset。
所以,你需要像这样解码:
s = b"bytes string with accentuated characters"
u = s.decode("ISO-8859-1")
您将获得unicode字符。