2017-02-16 16 views
1

私は2つのテーブルstream_239_1_1_1_1234_0stream_239_0_0_40_1234_0を持つpostgresデータベースを持っています。各テーブルにはalarmという1つの列があります。私はpsycopg2 Pythonクライアントを使用してこれらのテーブルにデータを保存しています。Postgres:psycopg2またはその近くで引用符で囲まれていない文字列

私は次のようにstream_239_1_1_1_1234_0にデータを挿入する問題はありません:

INSERT INTO stream_239_1_1_1_1234_0 (alarm) VALUES ('{"delay_max": 
0.0, "ts_errors": [{"count": 0, "state": 0, "is_priority1": true, "name": "SYNC", "is_priority2": false}, {"count": 0, "state": 0, 
"is_priority1": true, "name": "BYTE", "is_priority2": false}, 
{"count": 0, "state": 0, "is_priority1": true, "name": "PAT", 
"is_priority2": false}, {"count": 0, "state": 0, "is_priority1": true, 
"name": "CC", "is_priority2": false}, {"count": 0, "state": 0, 
"is_priority1": true, "name": "PMT", "is_priority2": false}, {"count": 
0, "state": 0, "is_priority1": true, "name": "PID", "is_priority2": 
false}, {"count": 0, "state": 0, "is_priority1": false, "name": "TS", 
"is_priority2": true}, {"count": 0, "state": 0, "is_priority1": false, 
"name": "CRC", "is_priority2": true}, {"count": 0, "state": 0, 
"is_priority1": false, "name": "PCR", "is_priority2": true}, {"count": 
0, "state": 0, "is_priority1": false, "name": "ACC", "is_priority2": 
true}, {"count": 0, "state": 0, "is_priority1": false, "name": "PTS", 
"is_priority2": true}, {"count": 0, "state": 0, "is_priority1": false, 
"name": "CAT", "is_priority2": true}], "is_stream_paused": false, 
"delay_min": 0.0, "ac_err": 0.0, "oj_err": 
0.0,"ipm_errors":[{"mnv":-3017, "mxv":2996, "mev":0, "mi":1000, "cr":0, "Bps":276667.104687, "df":4919, "pkl":0, "oos":0, "rei":0, 
"reo":0, "ncl":0.0, "slf":0.0, "mtl":0.0, "ld":0, "lpl":0, "lr":0.0}], 
"timestamp": "2017:02:16:16:10:49","id3_data": "None"}'); 

私は

INSERT INTO stream_239_0_0_40_1234_0 (alarm) VALUES ('{"delay_max": 
0.0, "ts_errors": [{"count": 0, "state": 0, "is_priority1": true, "name": "SYNC", "is_priority2": false}, {"count": 0, "state": 0, 
"is_priority1": true, "name": "BYTE", "is_priority2": false}, 
{"count": 0, "state": 0, "is_priority1": true, "name": "PAT", 
"is_priority2": false}, {"count": 0, "state": 0, "is_priority1": true, 
"name": "CC", "is_priority2": false}, {"count": 0, "state": 0, 
"is_priority1": true, "name": "PMT", "is_priority2": false}, {"count": 
0, "state": 0, "is_priority1": true, "name": "PID", "is_priority2": 
false}, {"count": 0, "state": 0, "is_priority1": false, "name": "TS", 
"is_priority2": true}, {"count": 0, "state": 0, "is_priority1": false, 
"name": "CRC", "is_priority2": true}, {"count": 0, "state": 0, 
"is_priority1": false, "name": "PCR", "is_priority2": true}, {"count": 
0, "state": 0, "is_priority1": false, "name": "ACC", "is_priority2": 
true}, {"count": 0, "state": 0, "is_priority1": false, "name": "PTS", 
"is_priority2": true}, {"count": 0, "state": 0, "is_priority1": false, 
"name": "CAT", "is_priority2": true}], "is_stream_paused": false, 
"delay_min": 0.0, "ac_err": 0.0, "oj_err": 
0.0,"ipm_errors":[{"mnv":-140, "mxv":143, "mev":0, "mi":1000, "cr":0, "Bps":697856.570014, "df":0, "pkl":0, "oos":0, "rei":0, "reo":0, 
"ncl":0.0, "slf":0.0, "mtl":0.0, "ld":0, "lpl":0, "lr":0.0}], 
"timestamp": "2017:02:16:16:16:43","id3_data": [{"Payload": 
"2016:05:12T11:47:41:000z", "id3_timestamp": 
"2017:02:16:21:16:40"}]}'); 

このクエリを使用して、このエラーを取得するのに対し、エラーがある:

終端されていない引用符で囲まれた文字列"{" count ":0、" state ":0、 " ts_errors " 0、 "is_priority1":true、 "name": "SYNC"、 "is_priority2":false}、{"count":0、 "state":0、 "is_priority1":true、 "name": "BYTE 0 "、" is_priority1 ":true、" name ":" PAT "、 " is_priority2 ":false}、{" count ":0}、" is_priority2 ":false}、 0 "、"状態 ":0、" is_priority1 ":true、 " name ":" CC "、" is_priority2 ":false}、{" count ":0、" state ":0、 " is_priority1 ":true、 "name": "PMT"、 "is_priority2":false}、{count}: 0、 "状態":0、 "is_priority1":true、 "name": "PID"、 "is_priority2": false} 0 "、" is_priority1 ":false、" name ":" TS "、 " is_priority2 ":true}、{count}:0、" state ":0、" {count " ""、 "is_priority1":false、 "name": "CRC"、 "is_priority2":true}、{"count":0、 " 0 "、" is_priority1 ":false、" name ":0、 " is_priority1 ":false、" name ":" PCR "、" is_priority2 ":true}、{count}: 0 {0}、 "is_priority1":false、 "name": "PTS"、 "is_priority2":true}、{"ACC"、 "is_priority2": true} "name": "CAT"、 "is_priority2":true}]、 "is_stream_paused":false、 "delay_min":0.0、 "ac_err":0、 "状態":0、 "状態" :0.0、 "oj_err": 0.0、 "ipm_errors":[{"mnv": - 140、 "mxv":143、 "mev":0、 "mi":1000、 "cr":0、 "Bps" :0、 "os":0、 "rei":0、 "reo":0、 "ncl":0.0、 "slf":0.0、 "mtl":697856.570014、 "df":0、 "pkl" 0135:02:16:16:16:43 "、" id3_data ":[{" "Payload"、 "ld":0、 "lpl":0、 "lr":0.0}]、 "タイムスタンプ" : "2016:05:12T11:47:41:0 00Z」LINE 1:... ERT INTO stream_239_0_0_40_1234_0(アラーム)VALUES( '{ "私は手動でシェルのpostgresからクエリを実行しようとdelay_m ...

、それが正常に動作します! 私はthis questionを見ましたが、私の場合にどのように関連するのかよく分かりません。 psycopg2 Pythonクライアントはすでに最初のクエリで正常に動作します!

お願いします。

EDIT {"ac_err":0.0、 "oj_err":0.0、 "id3_data":[{"ペイロード": "2016:05:12T11:47:41:000z"、 "id3_timestamp": "2017:02 :16:21:16:40 "}]、" delay_max ":0.0、" delay_min ":0。0 "、" timestamp ":" 2017:02:16:16:16:43 "、" ts_errors ":[{" name ":" SYNC "、" count ":0、" state ":0、" is_priority1 " true、 "is_priority2":false}、{"name": "BYTE"、 "count":0、 "state":0、 "is_priority1":true、 "is_priority2":false}、{"name": "PAT 0 "、" is_priority1 ":true、" is_priority2 ":false}、{" name ":" CC "、" count ":0、" state ":0、" is_priority1 " "is_priority2":false}、{is_priority2 ":false}、{" name ":" PMT "、" count ":0、" state ":0、" is_priority1 " "状態":0、 "is_priority1":true、 "is_priority2":false}、{"name": "TS"、 "count":0、 "state":0、 "is_priority2":true}、{"name": "CRC"、 "count":0、 "state":0、 "is_priority1":false、 "is_priority2":true}、{is_priority1 " 0 "、"状態 ":0、" is_priority1 ":false、" is_priority2 ":true}、{" name ":" ACC "、" count ":0、" state ":" PCR "、" count " {"name": "PTS"、 "count":0、 "state":0、 "is_priority1":false、 "is_priority2":true}、{is_priority1 ":false、" is_priority2 " "名前": "CAT"、 "カウント":0、 "状態":0、 "is_priority1":false、 "is_priority2":true}]、 "ipm_errors":[{"cr":0、 "df" 0、 "ld":0、 "lr":0.0、 "mi":1000、 "Bps":697856.570014、 "lpl":0、 "mev":0、 "mnv":-140、 "mtl":0.0 0、 "rex":0、 "slf":0.0}]、 "is_stream_paused":false }

EDIT私は答えを見つけたと私はそれを

+1

[JSONLint](http://jsonlint.com/)は有効なJSONテキストです。 – McNets

答えて

1

をポストする問題は、 "ペイロード" でJSONを形成する文字列のエンコーディングで基本的だった:「2016:05:12T11:41:47: 000z "となる。

このペイロードはC++関数から来ており、Python側に渡されています。パケットデータを表します。何らかの理由で、ペイロードに奇妙なエンコーディングがありました。 Payloadが文字列形式であり、オブジェクトが有効なJSON形式であることを確認しましたが、psycopg2はこのエンコーディングを認識できず、手動でクエリを実行できた理由を正当化します。ペイロードデータの末尾にNull終端文字を取り除くことで問題を解決しました

関連する問題