需要哪种SQLite列数据类型来处理此问题?

时间:2019-03-28 23:05:47

标签: sqlite python-3.7

{{1}}

我似乎遇到了一个常见错误...

sqlite3无法识别的令牌:

当返回值是数字/字符的组合并且字段中存在其他特殊字符时,会发生此错误。

有时,如果该字段仅包含数字或字符而不是组合,则可以使用。

我从中选择的下拉列表(tableGrade)应该每次都找到一个完全匹配的列表,因为下拉列表是从同一表/列填充的。

请问我该如何处理我的查询以免受注入攻击?

column data

1 个答案:

答案 0 :(得分:1)

由于该列包含数字和/或字符,因此您必须考虑其数据类型为TEXT,尽管在数据类型方面 SQLite 并不严格,因为您可以定义一个列的数据类型为INT,并在其中存储任何类型的文本。
您必须更改的是选择数据的方式。
您必须使用占位符?(参数标记),如下所示:

c.execute("SELECT prefix FROM " + tableType + " WHERE grade = ?", (tableGrade,))

其中tableType是保存表格名称的变量,而tableGrade是保存您要过滤的成绩的字符串值。