2012-12-19 130 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'(未知)值:這就是問題的癥結所在。 –