回答編集履歴
3
分割について追記
test
CHANGED
@@ -54,7 +54,7 @@
|
|
54
54
|
|
55
55
|
|
56
56
|
|
57
|
-
実行するSQLを調べたい時は、以下の
|
57
|
+
実行するSQLを調べたい時は、print文を追加して以下のように分割できます。
|
58
58
|
|
59
59
|
```Python
|
60
60
|
|
2
追記
test
CHANGED
@@ -3,6 +3,8 @@
|
|
3
3
|
|
4
4
|
|
5
5
|
質問文からは列:idの型が分かりませんが、エラーメッセージを見る限りでは
|
6
|
+
|
7
|
+
|
6
8
|
|
7
9
|
```sql
|
8
10
|
|
@@ -20,11 +22,13 @@
|
|
20
22
|
|
21
23
|
|
22
24
|
|
25
|
+
|
26
|
+
|
23
27
|
■補足解説
|
24
28
|
|
25
|
-
Pythonプログラム上のSQL文字列と実際に実行されるSQLをご
|
29
|
+
Pythonプログラム上のSQL文字列と実際に実行されるSQLをごちゃ混ぜに認識している気がします。
|
26
30
|
|
27
|
-
質問文のSQLで+=を使っている箇所は以下の部分です。
|
31
|
+
質問文のSQL文字列で+=を使っている箇所は以下の部分です。
|
28
32
|
|
29
33
|
|
30
34
|
|
@@ -33,6 +37,20 @@
|
|
33
37
|
self.cursor.execute('update virustotal_api_keys set use_time = now(),use_numbers += 1 where id = %d' % (m+1))
|
34
38
|
|
35
39
|
```
|
40
|
+
|
41
|
+
|
42
|
+
|
43
|
+
エラーメッセージが以下のメッセージなので、SQL中の%dは変数展開されています。
|
44
|
+
|
45
|
+
|
46
|
+
|
47
|
+
```SQL
|
48
|
+
|
49
|
+
'+= 1 where id = 1'
|
50
|
+
|
51
|
+
```
|
52
|
+
|
53
|
+
|
36
54
|
|
37
55
|
|
38
56
|
|
1
補足解説
test
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
|
3
3
|
|
4
4
|
|
5
|
-
エラーメッセージを見る限りでは
|
5
|
+
質問文からは列:idの型が分かりませんが、エラーメッセージを見る限りでは
|
6
6
|
|
7
7
|
```sql
|
8
8
|
|
@@ -20,8 +20,42 @@
|
|
20
20
|
|
21
21
|
|
22
22
|
|
23
|
+
■補足解説
|
24
|
+
|
25
|
+
Pythonプログラム上のSQL文字列と実際に実行されるSQLをごっちゃに認識している気がします。
|
26
|
+
|
27
|
+
質問文のSQLで+=を使っている箇所は以下の部分です。
|
28
|
+
|
29
|
+
|
30
|
+
|
31
|
+
```Python
|
32
|
+
|
33
|
+
self.cursor.execute('update virustotal_api_keys set use_time = now(),use_numbers += 1 where id = %d' % (m+1))
|
34
|
+
|
35
|
+
```
|
36
|
+
|
37
|
+
|
38
|
+
|
39
|
+
実行するSQLを調べたい時は、以下の三行に展開できます。
|
40
|
+
|
41
|
+
```Python
|
42
|
+
|
43
|
+
sql = 'update virustotal_api_keys set use_time = now(),use_numbers += 1 where id = %d' % (m+1)
|
44
|
+
|
45
|
+
# print文で表示される内容が実際に実行されるSQLです。
|
46
|
+
|
47
|
+
print(sql)
|
48
|
+
|
49
|
+
self.cursor.execute(sql)
|
50
|
+
|
51
|
+
```
|
52
|
+
|
53
|
+
|
54
|
+
|
23
55
|
■余談
|
24
56
|
|
25
57
|
1,commit文が質問文にはないのですが、適切なタイミングでcommitを忘れずにしてくださいな。
|
26
58
|
|
27
59
|
2,self.connectとself.cursorはAnalysisクラスにclose関数を追加して[contextlib.closing](https://docs.python.jp/3/library/contextlib.html#contextlib.closing)を使う形にするとclose忘れを防ぎやすくなります。
|
60
|
+
|
61
|
+
3,SQLインジェクション防止のためにSQLプレースフォルダを使う事を検討してくださいな。
|