2012-12-19 129 views
2

可能重复:
Passing SQLite variables in 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)) 

什么是最合适的句法?

回答

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)) 

executedocumentation

+0

也许值得注意的是,在这里作为参数传递时,'None'将被视为'NULL'(未知)值:这就是问题的症结所在。 –