如何查询名称中带有[]的列?

时间:2019-02-04 15:18:52

标签: python sql sqlite

我正在使用python和sqlite3开发针对特定数据库的查询工具。在此数据库中,名称中的某些列中带有方括号以指示值的单位,例如:current_ [mA]。

在某些时候,我使用多个列进行查询,例如: “从表中选择名称,编号,电流[mA],电压[V]”

但是,每当我尝试使用方括号查询一列时,它都会查询失败或执行错误的查询。

我试图在包含括号的列名中进行处理,但是我没有找到有效的解决方案。

columns_to_query = ['Name', 'Number', 'current_[mA]', 'voltage_[V]']
query = 'SELECT * FROM table'
for col in columns_to_query:
    if '[' in col:
        colstr += ",[" + str(col) + ']'
    else:
        colstr += "," + str(col)
    colstr += ' '
    query = self.query.replace(self.query.split(' ')[1], colstr)

当我尝试执行查询时,出现以下错误: 无法执行查询。错误说明->没有这样的列:current _

如您所见,它停在左括号中

要查询这些列我需要做什么?

谢谢!

1 个答案:

答案 0 :(得分:0)

我对SQLite3不太满意,但是如果它们包含特殊字符或保留字,通常您只需反引号即可:

Select Name,Number,`current_[mA]`,`voltage_[V]` FROM table

还请注意,如果您使用字符串连接构建SQL查询,那么您很可能会受到SQL注入攻击。您将改为使用use prepared statements with bound parameters