2011-09-24 25 views
8

我想用python和mysql.connector將一串字符串插入到mysql中。我現在的代碼看起來像這樣:用python mysql.connector轉義字符串

db = mysql.connector.Connect('config blah blah') 
cursor = db.cursor() 
data = (somestring1, somestring2) 
sql = "INSERT INTO mytable (col1, col2) VALUES ('%s', '%s')" 
cursor.execute(sql, data) 

我應該如何逃避我的字符串?我可能嘗試在python中做它,但我知道這不是權利的方式。

注:我意識到mysql.connector仍在開發中。

更新:

4行應爲:

sql = "INSERT INTO mytable (col1, col2) VALUES (%s, %s)" 

回答

7

由於mysql.connector是DB API v2.0兼容,你不需要自己逃脫數據,它會自動爲您完成。

+0

感謝。我實際上輸入了正確的示例代碼。我已經編輯它來顯示我的問題。 –

+0

如果您必須生成包含1000(10,000,1,000,000)值的插入語句,您必須使用'%s'對其進行硬編碼?如果您不知道需要插入多少值,例如,如果從外部源(文件,HTTP請求)讀取它,如何使用「自動轉義」,該怎麼辦? – Vitaliy

6

infrared的答案是最好的方法。

但是,如果你真的需要逃避一些任意字符串,你可以這樣做:

db = mysql.connector.connect(......) 

new_str = db.converter.escape('string to be escaped')