2016-11-08 11 views
0

私のJSONデータが含まれていJSONデータは、SQLiteのDBへの書き込みではない - Pythonの

{ 
    "realms": [ 
     { 

      "status": true, 
      "battlegroup": "Shadowburn", 
      "name": "Zuluhed", 
      "locale": "en_US", 
      "queue": false, 
      "connected_realms": [ 
       "ursin", 
       "andorhal", 
       "scilla", 
       "zuluhed" 
      ], 
      "timezone": "America/New_York", 
      "type": "pvp", 
      "slug": "zuluhed", 
      "population": "medium" 
     } 
    ] 
} 

と、これは(DBファイル にJSONデータを、データを入れなければならない私のコードsnipetがロードされたされたが、次の(より大きな)データ変数(データ= json.loads(応答)))

db=sqlite3.connect("temp.db") 
c=db.cursor() 
for record in data['realms']: 
    c.execute('INSERT INTO realms (status, name, queue, timezone, type, population) VALUES (?,?,?,?,?,?)', (record['status'], record['name'],record['queue'], record['timezone'],record['type'], record['population'])) 

スクリプトを実行すると、エラーなしで実行されますが、テーブルの内容をチェックインすることは

# sqlite3 temp.db 
SQLite version 3.8.2 2013-12-06 14:53:30 
Enter ".help" for instructions 
Enter SQL statements terminated with a ";" 
sqlite> SELECT * FROM "realms"; 
sqlite> 
sqlite> .tables 
realms 
sqlite> 
0123何

はありません

私はjsonとsqliteを初めて使いました。 ありがとう

+4

後で 'db.commit()'をやりましたか?カーソルは、変更をコミットするまで表を更新しません。 – roganjosh

+0

元のプログラムを問題を示す最短のプログラムとデータセットに減らしてください。あなたの投稿を編集して、ショート・プログラムとデータセット全体をコピーし、予想された出力と実際の出力と一緒に貼り付けてください。詳細は[mcve]を参照してください。 –

+0

あなたは 'create table realms'をどこでどのように呼び出すのかは記述しておらず、そのテーブルはあなたが調べる' temp.db'には現れません。あなたのPythonが書き込む 'temp.db'は手で調べる' temp.db'とは別のディレクトリにある可能性があります。あなたのPythonプログラムで 'print(os.getcwd())'できますか? –

答えて

2

cursorオブジェクトを介してデータベースに行う更新は、コミットするまで有効になりません。あなたの場合、データベースへの接続はdbdb=sqlite3.connect("temp.db"))となりますので、INSERTコマンドの後ろにdb.commit()のどこかが必要です。

関連する問題