2011-12-29 34 views
2

我有一個字典格式的數據行。有沒有簡單的方法將其插入到MySQL表中。我知道我可以編寫自定義函數來將dict轉換爲自定義sql查詢,但我正在尋找更直接的選擇。MySQLdb在表格中插入一個字典

回答

2

MySQLDB沒有提供任何允許直接操作的東西。這是各種答案的常見問題,包括用於此目的的自定義功能。

根據我的經驗,最好的辦法是絕大部分時間都要寫下參數化SQL。如果你同樣的事情發生了很多,那麼我會考慮把它分解成一個效用函數。但是,如果您使用參數手動編寫靜態SQL,那麼大多數安全和錯誤相關問題都會得到解決。當你開始將你的SQL基於來自where(?)的數據字典時,你需要更謹慎。

總之,如果您只是簡單地編寫查詢,使用參數和文檔,您的代碼可能會更具可讀性,可維護性和安全性。

(注:ORM的一些支持者,等等可能不同意...這是基於很多對什麼是簡單的,可靠的體驗意見,並努力爲我們的團隊)

4

那麼...根據文檔paramstyle

設置爲'format'= ANSI C printf格式代碼,例如'... WHERE name =%s'。 如果映射對象用於conn.execute(),則接口 實際上使用'pyformat'= Python擴展格式代碼,例如, '... WHERE name =%(name)s'。然而,API目前不允許 超過一個風格paramstyle規範

所以,它應該是像下面這樣:

curs.execute("INSERT INTO foo (col1, col2, ...) VALUES (%(key1)s, %(key2)s, ...)", dictionary)

其中key1key2等。將會是字典中的關鍵字。

免責聲明:我沒有嘗試過這個自己:)

編輯:是的,試了一下。有用。