回答編集履歴

2

プレースホルダを利用した例を試しに実装

2021/10/29 13:43

投稿

attakei
attakei

スコア2740

test CHANGED
@@ -55,3 +55,43 @@
55
55
 
56
56
 
57
57
  lidとして`1`が来る分には`lid=1`で整数の1とみなされますが、`810C3B31`だと`lid=810C3B31`なのでSQLとしては文法エラーのはず。
58
+
59
+
60
+
61
+ ## 補足
62
+
63
+
64
+
65
+ PyMySQLを使うのであれば、パラメーター形式で渡せるのでこっちを使ったほうが安全(エラーが起きにくい)かと思います。
66
+
67
+
68
+
69
+ [ドキュメント](https://pymysql.readthedocs.io/en/latest/user/examples.html)をもと、試しに書いてみた例(動作確認してません)
70
+
71
+
72
+
73
+ ```python
74
+
75
+ def select(yyyy,MM,dd,lid): # select関数
76
+
77
+ connection = pymysql.connect()
78
+
79
+
80
+
81
+ with connection.cursor() as cursor:
82
+
83
+ FROM = yyyy+"-"+MM+"-"+dd+" 00:00:00"
84
+
85
+ TO = yyyy+"-"+MM+"-"+dd+" 23:00:00"
86
+
87
+
88
+
89
+ sql = "select * from thData where lid = %s and date >= %s and date <= %s"
90
+
91
+ cursor.execute(sql, [lid, FROM, TO])
92
+
93
+ results = cursor.fetchall()
94
+
95
+ return results
96
+
97
+ ```

1

diff形式のインデント調整

2021/10/29 13:43

投稿

attakei
attakei

スコア2740

test CHANGED
@@ -30,11 +30,11 @@
30
30
 
31
31
  TO = yyyy+"-"+MM+"-"+dd+" 23:00:00"
32
32
 
33
- + # lidに文字列が来るならクオートが必要
33
+ + # lidに文字列が来るならクオートが必要
34
34
 
35
- + sql = "select * from thData where lid= '"+ str(lid) + "'"
35
+ + sql = "select * from thData where lid= '"+ str(lid) + "'"
36
36
 
37
- - sql = "select * from thData where lid="+str(lid)
37
+ - sql = "select * from thData where lid="+str(lid)
38
38
 
39
39
  sql += " and date>='"+FROM+"' and date<='"+TO+"'"
40
40