2017-10-26 1 views
1

Linux上でのRedisのために建てられたのRedis-CLIを使用している場合、この値Iを入力するPythonスクリプトでのRedis-PYを使用している場合、私はノー問題Pythonの構文/ Redisの

redis-cli -p 6379 mset SWSUIT "{\"D0:\": {\"install\": {\"rules\": [[0.62, -0.34], [-0.00, 4.95], [0.00, 0.00, 0.18]], \"name\": \"DO\", \"slows\": [[[{\"bit\": \"p\", \"order\": 1, \"gfx\": 0, \"N\": 4}], [{\"bit\": \"c\", \"gfx\": 0, \"N\": 4}]], [[{\"bit\": \"p\", \"order\": 2, \"gfx\": 0, \"N\": 4}], [{\"type\": \"c\", \"gfx\": 0, \"N\": 4}]], [[{\"bit\": \"p\", \"order\": 1, \"gfx\": 0, \"N\": 4}], [{\"bit\": \"p\", \"order\": 2, \"gfx\": 0, \"N\": 4}], [{\"bit\": \"c\", \"gfx\": 0, \"N\": 4}]]], \"suit\": [0, 1, 1, 1], \"test\": [1.0, 1.0, 1.0, 1.0]}, \"pal\": [100.0, 100.0, 100.0, 100.0], \"alto\": [0.0, 0.0, 0.0, 0.0]}}" 

    r.mset('SWSUIT', '"{\"D0:\": {\"install\": {\"rules\": [[0.62, -0.34], [-0.00, 4.95], [0.00, 0.00, 0.18]], \"name\": \"DO\", \"slows\": [[[{\"bit\": \"p\", \"order\": 1, \"gfx\": 0, \"N\": 4}], [{\"bit\": \"c\", \"gfx\": 0, \"N\": 4}]], [[{\"bit\": \"p\", \"order\": 2, \"gfx\": 0, \"N\": 4}], [{\"type\": \"c\", \"gfx\": 0, \"N\": 4}]], [[{\"bit\": \"p\", \"order\": 1, \"gfx\": 0, \"N\": 4}], [{\"bit\": \"p\", \"order\": 2, \"gfx\": 0, \"N\": 4}], [{\"bit\": \"c\", \"gfx\": 0, \"N\": 4}]]], \"suit\": [0, 1, 1, 1], \"test\": [1.0, 1.0, 1.0, 1.0]}, \"pal\": [100.0, 100.0, 100.0, 100.0], \"alto\": [0.0, 0.0, 0.0, 0.0]}}" 
') 

で次のコマンドを入力することができますそれを動作させることはできません。私は、kwalまたは辞書を挿入する必要があると言っているエラーを続けています。私はこれは、Pythonが引用符とバックスラッシュを別々に解釈していると仮定しています。値を変更せずにコマンドを実行できる方法はありますか?上記のようにフォーマットする必要があります。また、コマンドを実行するためにosパッケージを試しました。

os.system('redis-cli -p 6379 mset SWSUIT "{\"D0:\": {\"install\": {\"rules\": [[0.62, -0.34], [-0.00, 4.95], [0.00, 0.00, 0.18]], \"name\": \"DO\", \"slows\": [[[{\"bit\": \"p\", \"order\": 1, \"gfx\": 0, \"N\": 4}], [{\"bit\": \"c\", \"gfx\": 0, \"N\": 4}]], [[{\"bit\": \"p\", \"order\": 2, \"gfx\": 0, \"N\": 4}], [{\"type\": \"c\", \"gfx\": 0, \"N\": 4}]], [[{\"bit\": \"p\", \"order\": 1, \"gfx\": 0, \"N\": 4}], [{\"bit\": \"p\", \"order\": 2, \"gfx\": 0, \"N\": 4}], [{\"bit\": \"c\", \"gfx\": 0, \"N\": 4}]]], \"suit\": [0, 1, 1, 1], \"test\": [1.0, 1.0, 1.0, 1.0]}, \"pal\": [100.0, 100.0, 100.0, 100.0], \"alto\": [0.0, 0.0, 0.0, 0.0]}}" 

「)作品の

ソートが、Redisのに値を入力するには、誤っ

ありがとうフォーマットされました。

+0

あなたはどんな場合でも辞書を提供するのではなく、文字列内の辞書 –

答えて

0

これはJSON文字列のフォーマットに関するものではありません。あなたが戻ってくるエラーは、間違った引数を関数に渡していることを示しています。 msetredis-pyの呼び出しでは、キーワード引数またはPython辞書が入力として必要です。 RedisのMSETコマンドは、複数のキーの値を1つのアクションに設定するためのものです。そのため、Python APIでは、Redisキーをその値にマッピングする2つのフォームのいずれかが必要です。コードを次のように変更した場合:

myDict = { 'SWSUIT': '"{\"D0:\": {\"install\": {\"rules\": [[0.62, -0.34], [-0.00, 4.95], [0.00, 0.00, 0.18]], \"name\": \"DO\", \"slows\": [[[{\"bit\": \"p\", \"order\": 1, \"gfx\": 0, \"N\": 4}], [{\"bit\": \"c\", \"gfx\": 0, \"N\": 4}]], [[{\"bit\": \"p\", \"order\": 2, \"gfx\": 0, \"N\": 4}], [{\"type\": \"c\", \"gfx\": 0, \"N\": 4}]], [[{\"bit\": \"p\", \"order\": 1, \"gfx\": 0, \"N\": 4}], [{\"bit\": \"p\", \"order\": 2, \"gfx\": 0, \"N\": 4}], [{\"bit\": \"c\", \"gfx\": 0, \"N\": 4}]]], \"suit\": [0, 1, 1, 1], \"test\": [1.0, 1.0, 1.0, 1.0]}, \"pal\": [100.0, 100.0, 100.0, 100.0], \"alto\": [0.0, 0.0, 0.0, 0.0]}}"' } 
r.mset(myDict) 

あなたが望む結果が得られます。単一のデータ型を設定しようとしているだけなので、setメソッドがより良い選択になります。