2010-10-13 38 views
0

有人可以幫我出來的MySQL連接語句來插入一個文本文件到MySQL表(字段類型是長BLOB)?蟒蛇 - 需要幫助插入文本文件與打開()到MySQL

例如:

cursor.execute("insert into mytable (file_contents) values ('"+open(filename,"r").read()+"')") 

顯然,這不是很實用,可以有人張貼更好的方式來做到這一點?

回答

1

由於特殊字符(引號!)或惡意SQL命令,將文件內容直接附加到SQL查詢中是很危險的。

試試這個:

with open(filename,"r") as infile: 
    cursor.execute("insert into mytable (file_contents) values (%s)", (infile.read(),)) 
+0

沒錯。請注意,來自infile的數據作爲第二個參數傳遞 - 字符串插值由cursor.execute處理,它也確保字符串參數正確轉義。 – jsalonen 2010-10-13 13:31:24