1

我有以下代码:

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)

但是我不喜欢正确的格式。有人可以帮忙吗?

4

1 回答 1

2

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

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

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

def add_record(self, tablename, values):
    the_query = "INSERT INTO {:s} VALUES (?,?);".format(tablename)
    self.sql.execute(the_query, values)
于 2012-06-29T18:09:12.327 回答