質問するログイン新規登録

回答編集履歴

2

コード修正

2020/03/03 10:50

投稿

8524ba23
8524ba23

スコア38350

answer CHANGED
@@ -18,10 +18,10 @@
18
18
  con.close()
19
19
 
20
20
  # テストデータ。fetchallなりで取り出してきたもの
21
- fetch_dat = [({"num": 3, "str": "c"},), ({"num": 4, "str": "d"},)]
21
+ fetch_dat = [('{"num": 3, "str": "c"}',), ('{"num": 4, "str": "d"}',)]
22
22
 
23
23
  # タプルで包まれているので、包みを取り除く
24
- fetch_dat = [t[0] for t in fetch_dat]
24
+ fetch_dat = [json.loads(t[0]) for t in fetch_dat]
25
25
  print(fetch_dat) # [{'num': 3, 'str': 'c'}, {'num': 4, 'str': 'd'}]
26
26
 
27
27
  # クエリ文字列を作成

1

コード修正

2020/03/03 10:50

投稿

8524ba23
8524ba23

スコア38350

answer CHANGED
@@ -17,18 +17,21 @@
17
17
  con.commit()
18
18
  con.close()
19
19
 
20
- # テストjsonデータ。追加したいレコード
20
+ # テストデータ。fetchallなりで取り出てきもの
21
- json_str = '[{"num": 3, "str": "c"}, {"num": 4, "str": "d"}]'
21
+ fetch_dat = [({"num": 3, "str": "c"},), ({"num": 4, "str": "d"},)]
22
- json_dat = json.loads(json_str)
23
22
 
23
+ # タプルで包まれているので、包みを取り除く
24
+ fetch_dat = [t[0] for t in fetch_dat]
25
+ print(fetch_dat) # [{'num': 3, 'str': 'c'}, {'num': 4, 'str': 'd'}]
26
+
24
27
  # クエリ文字列を作成
25
- columns = tuple(json_dat[0].keys())
28
+ columns = tuple(fetch_dat[0].keys())
26
29
  params = ['?' for _ in range(len(columns))]
27
30
  sql = 'insert into t_test({}) values({})'.format(','.join(columns), ','.join(params))
28
31
  print(sql) # insert into t_test(num,str) values(?,?)
29
32
 
30
33
  # クエリに渡すデータ。値をタプルにしたリスト
31
- datas = [tuple(e.values()) for e in json_dat]
34
+ datas = [tuple(e.values()) for e in fetch_dat]
32
35
 
33
36
  # テーブルに複数レコード追加
34
37
  con = sqlite3.connect('test.db')