回答編集履歴

1

バグがもう一個あったので追加

2020/08/09 04:50

投稿

YakumoSaki
YakumoSaki

スコア2027

test CHANGED
@@ -1,3 +1,5 @@
1
+ ## バグ1 inda() の引数誤り
2
+
1
3
  `inda()` の第一引数にテーブル名をいれるような作りなのに、`tab` という関数を入れてしまっています。
2
4
 
3
5
 
@@ -10,10 +12,74 @@
10
12
 
11
13
 
12
14
 
15
+ ## バグ2 INSERT文の実行方法誤り
16
+
17
+
18
+
19
+ `INSERT INTO テーブル名 (we, date) values (?, ?)` というように ? を使ったところはいいのですが
20
+
21
+ ? に入る値の指定を execute時にしないといけないのにそれが抜けています。
22
+
23
+
24
+
25
+ ## バグ3 get_dateが値を返さない
26
+
27
+
28
+
29
+ can110さんのご指摘の通り
30
+
31
+
32
+
33
+ ## とりあえず動きそうなコード
34
+
35
+
36
+
37
+ get_date以外を直してみました。
38
+
39
+
40
+
13
41
  ```python
14
42
 
15
- inda(table_name, test)
16
43
 
44
+
45
+ # indaは全文掲載
46
+
47
+ def inda(ta, we, date):
48
+
49
+ # insert = 'insert into {} (we, date) values (?,?);'.format(ta, date) # ここにdateは不要
50
+
51
+ insert = 'insert into {} (we, date) values (?,?);'.format(ta)
52
+
53
+ # c.execute(insert, date) # ?が2個あるのに値が1個しかない
54
+
55
+ c.execute(insert, [we, date]) # ? を使ったときの ? に入れる値はここで配列にして指定する
56
+
57
+ conn.commit()
58
+
59
+ print("committed")
60
+
61
+
62
+
63
+ s = 'select * from {};'.format(table_name)
64
+
65
+ for a in c.execute(s):
66
+
67
+ print(a)
68
+
69
+ # conn.close() #ここでcloseしてしまったらデータが1件しか取れない。
70
+
71
+
72
+
73
+ conn.close() # 動くように移動しましたがcloseせずにプログラムの最後でしたほうがよいです
74
+
75
+
76
+
77
+
78
+
17
- ^^^^^^^^^^ ここが tab ではなく table_name
79
+ tab(table_name)
80
+
81
+ test = get_date()
82
+
83
+ inda(table_name, "we_no_data", "date_no_data") # とりあえず固定値にしています
18
84
 
19
85
  ```