需要什么 SQLite 列数据类型来处理这个问题?
What SQLite column data type is required to handle this?
def material_code(self):
tableType = self.comboBox.currentText()
tableGrade = self.comboBox_2.currentText()
tableType = tableType.lower()
c.execute('SELECT prefix FROM ' + tableType + ' WHERE grade = ' + tableGrade)
prefix_code = c.fetchone()
print(prefix_code[0])
conn.commit()
我似乎遇到了一个常见错误...
sqlite3 无法识别的标记:
当 return 是 numeric/char 的组合并且字段中存在其他特殊字符时,会出现此错误。
有时,如果字段仅包含数字或字符而不是组合,它会起作用。
我正在选择的下拉列表 (tableGrade) 应该每次都能找到完全匹配的内容,因为下拉列表是从相同的 table/column.
填充的
另外,我可以对我的查询做些什么来防止注入攻击?
因为该列包含数字 and/or 个字符,那么您必须考虑它的数据类型是 TEXT
,尽管 SQLite 在涉及到时并不严格数据类型,因为您可以将列的数据类型定义为 INT
并在其中存储任何类型的文本。
您必须改变的是 select 数据的方式。
您必须像这样使用占位符 ?
(参数标记):
c.execute("SELECT prefix FROM " + tableType + " WHERE grade = ?", (tableGrade,))
其中 tableType
是保存 table 名称的变量,tableGrade
是保存要过滤的成绩的字符串值。
def material_code(self):
tableType = self.comboBox.currentText()
tableGrade = self.comboBox_2.currentText()
tableType = tableType.lower()
c.execute('SELECT prefix FROM ' + tableType + ' WHERE grade = ' + tableGrade)
prefix_code = c.fetchone()
print(prefix_code[0])
conn.commit()
我似乎遇到了一个常见错误...
sqlite3 无法识别的标记:
当 return 是 numeric/char 的组合并且字段中存在其他特殊字符时,会出现此错误。
有时,如果字段仅包含数字或字符而不是组合,它会起作用。
我正在选择的下拉列表 (tableGrade) 应该每次都能找到完全匹配的内容,因为下拉列表是从相同的 table/column.
填充的另外,我可以对我的查询做些什么来防止注入攻击?
因为该列包含数字 and/or 个字符,那么您必须考虑它的数据类型是 TEXT
,尽管 SQLite 在涉及到时并不严格数据类型,因为您可以将列的数据类型定义为 INT
并在其中存储任何类型的文本。
您必须改变的是 select 数据的方式。
您必须像这样使用占位符 ?
(参数标记):
c.execute("SELECT prefix FROM " + tableType + " WHERE grade = ?", (tableGrade,))
其中 tableType
是保存 table 名称的变量,tableGrade
是保存要过滤的成绩的字符串值。