2016-08-19 3 views
0

タイトルは本当にすべてそれを言う。私はそれを試してみて、それをjsonifyときに非常によく再生されていないデータ型を取得し、MySQLのDBを呼び出します。このデータ型をフロントエンドで使用できるものに変換しようとするのは夢中です。MySQLデータベースは、数値( '数値')の値を返します。どのようにPythonでデータ型を変換するのですか?

私はどちらかdecimal型が解消されないか、私はエンコードのエラーが出るなど、など、フロート、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 

originalオブジェクトにjson.dumpsを使用すると、10進数のエラーが発生する v2はutf-8エンコーディングを取得しますROR ... v2はまだUTF-8エンコーディングエラーが発生します。..

+0

あなたの価値は?テーブルはどのように定義されていますか?どの種類のコネクタ/ ORMを使用しますか? –

+0

フラスコ環境でmysql-pythonを使用しています - 元の値のデータ型はmysqlデータベースで 'int'ですが、 'quantity'列の合計関数を実行しています – pauld

+0

OK、 'int '。あなたの質問を編集して、あなたのオブジェクト/テーブルマッピング(サンプル)を投稿できますか? –

答えて

-1

問題が引き起こされる可能性を強調文字でcountry_areaフィールドに。

SQL結果からバイト文字列を取得する場合は、テーブルのエンコードを使用してそれをデコードする必要があります。

デフォルトでは、MySQLはlatin1_swedish_ci => ISO-8859-1の文字セットを使用します。

だから、あなたはこのようにデコードする必要があります。

s = b"bytes string with accentuated characters" 
u = s.decode("ISO-8859-1") 

あなたがUnicode文字を取得します。

+0

これをクエリに実装する方法が正確ではありませんか? – pauld

+0

そうすることは、Pythonでは役に立たないようです。 – pauld

関連する問題