2012-11-26 45 views
0

我已經將條目作爲字典存儲,並且字典中的字典鍵與字段名稱相同。有沒有簡單的命令可以直接做到這一點?將條目插入到mysqldb中,條目的值存儲爲字典python

目前這是命令我使用

cursor.execute('INSERT INTO jobs (title, description, country, state, city) 
VALUES (%(title)s, %(description)s, %(country)s, %(state)s, %(city)s)', (job_data.get_parsed_dictionary())) 

很多時候,Python有各種各樣的事情那麼多優雅的圖書館方法。我希望有一個這樣的命令使它更簡單。

回答

0

您可以生成列名:

data = job_data.get_parsed_dictionary() 

columns = ', '.join(data.keys()) 
parameters = ', '.join(['%({0})s'.format(k) for k in data.keys()]) 
query = 'INSERT INTO jobs ({columns}) VALUES ({parameters})'.format(columns=columns, parameters=parameters) 

cursor.execute(query, data) 

需要確保在.get_parsed_dictionary()結果的關鍵是安全進行插值到一個SQL查詢(請記住您的SQL注入攻擊向量)。如果你有一個可能的列名稱的列表,我肯定會檢查,以過濾掉你可能在dict中找到的任何雜散'額外'鍵。

+0

get_parsed_dictionary()中的鍵是從代碼中獲取的,但我們如何通過更改數據中的鍵來執行sql注入? – raju

+0

@santu:字典的鍵被置於查詢中不變。所以如果任何鍵是'); DROP TABLE作業;'你有一個*大*問題。 –