这个sqlite3查询的正确格式是什么? (蟒蛇)

时间:2012-06-29 18:04:14

标签: python sqlite python-2.7

我有以下代码:

def add_record(self,values):
    self.sql.execute("INSERT INTO TEST VALUES (?,?)" % values)

我想调整它以适应用户定义的表格,例如:

def add_record(self,tablename,values):
        self.sql.execute("INSERT INTO TEST VALUES (?,?)" % values)

但是我对正确的格式不满意。有人可以帮忙吗?

1 个答案:

答案 0 :(得分:2)

请注意,对任何查询使用字符串插值都会带来SQL-injection attack的风险。

如果您可以确定不会使用恶意代码,则可以使用以下两步过程 1.表名的字符串插值。
2.将查询参数作为第二个参数传递给.execute()

(不支持表名和/或列名的参数化。)

def add_record(self, tablename, values):
    the_query = "INSERT INTO {:s} VALUES (?,?);".format(tablename)
    self.sql.execute(the_query, values)