2013-04-16 20 views
0

我有以下字典格式:使用Python將兩個字典互相寫入MySQL表的最快方法?

{ File1:{name1:2,name2:4}, 
    File2:{name3:3, name2:5}, 
    File3:{name5:6} } 

我想將其插入到一個MySQL表與以下格式:

Id|File_name|Name|#of Seen 
1 File1 name1 2 
2 File1 name2 4 
3 File3 name3 3 
4 File2 name2 5 
5 File3 name5 6 

我寫了下面的代碼,但我不斷收到「空」在我的表格行(S)(現在只有一行)。

connect = MySQLdb.connect(host = "127.8.2.3", port=3377, user = "root", db="info") 
with connect: 

    cur = connect.cursor() 
    for i in maindict.items(): 
     keys=i[0] 
     for k,v in innerdict.items(): 
      k=i[1] 
      v=i[2] 



      query="INSERT INTO TABLE names_info (id,filename,name) VALUES (%(id)s,% (filename)s, %(name)s)" 
      cursor.execute(query) 

有誰知道爲什麼它不工作,或者我怎麼能從我的數據中獲得上述表格?

回答

1

好了,一個簡單的方法來做到字典迭代會...

maindict = {'File1': {'name1': 2, 'name2': 4}, 
      'File2': {'name3': 3, 'name2': 5}, 
      'File3': {'name5': 6}} 

for filename, name_and_number in maindict.iteritems(): 
    for name, number in name_and_number.iteritems(): 
     print filename, name, number 

...你可能應該更換這些線路...

query="INSERT INTO TABLE names_info (id,filename,name) VALUES (%(id)s,% (filename)s, %(name)s)" 
cursor.execute(query) 

...用更多這樣的東西...

query = "INSERT INTO TABLE names_info (id,filename,name) VALUES (%s,%s,%s)" 
cursor.execute(query, [id, filename, name]) 

...以避免任何潛在的SQL injection問題。

+0

我已經嘗試了你的代碼,現在我沒有收到任何錯誤,但仍然沒有行顯示在我的SQL表中。只有一行。你知道爲什麼嗎? – UserYmY

+0

@ user2058811不是。如果這是一個不同的問題,那麼請打開一個新問題,確保您逐字引用代碼的相關部分。看起來這個問題中有一個大塊丟失。 – Aya

相關問題