2

可能重复:
在 Python 中传递 SQLite 变量

我的脚本中有一个函数将值传递给一个类方法,该方法的工作是用它接收到的变量填充其分配的数据库。问题是,我不确定语法是否正确,因为我没有使用普通字符串。这是方法。

def new_response(self, link_pattern, link, response, ref_id=""):
    self.db_cursor.execute('''INSERT INTO tb_memory VALUES 
    (%s, %s, %s, %s)''' % (ref_id, link_pattern, link, response))

什么是最合适的句法方法?

4

1 回答 1

2

永远不要使用字符串格式化来创建 SQL 语句!如果您使用字符串格式化,您的程序将受到可能的 SQL 注入攻击的影响。使用'?'占位符:

def new_response(self, link_pattern, link, response, ref_id=""):
    self.db_cursor.execute('''INSERT INTO tb_memory VALUES 
    (?, ?, ?, ?)''', (ref_id, link_pattern, link, response))

请参阅. _execute

于 2012-12-19T06:48:23.793 回答