2016-02-07 106 views
0

我是Django的新手,並且有一些問題寫入MySQL dB。我想要做的是循環嵌套的JSON數據,並動態創建一個字符串用於save()方法。動態創建Django的查詢字符串> JSON的MySQL

我已經通過我的嵌套JSON數據循環,併成功創建了一個包含我想在單行保存到MySQL表「mysqltable」數據的字符串:

q = "station_id='thisid',stall_id='thisstaull',source='source',target='test'" 

然後我儘量節省這在MySQL表:

b = mysqltable(q) 
    b.save() 

但我得到的錯誤:

TypeError: int() argument must be a string or a number, not 'mysqltable'

我認爲正在發生的是它不喜歡我創建了一個字符串以在b = mysqltable中使用的事實(q)。當我剛寫出來的語句,如下面的正常工作:

q = mysqltable(station_id='thisid',stall_id='thisstaull',source='source',target='test') 
    q.save() 

但我不知道如何採取串並使其可與b.save使用()。任何幫助將不勝感激!

+0

爲什麼你把你的JSON數據轉換爲一個字符串?把它保存爲字典會更有用,然後你可以用'mysqltable(** data)'將它直接傳遞給模型初始化。該字符串格式沒有用處。 –

+0

感謝您的回覆。我試圖處理JSON中的嵌套,並且我知道.save()之前的語句是mysqltable(variable1 ='value1「,variable2 ='value2')。因此,通過循環創建該字符串非常簡單key:value動態地創建key:value對,僅用於存在於JSON中的元素。我不想爲JSON中不存在的元素寫入空值到dB。是否有可以指向的答案我爲了將嵌套的JSON扁平化爲一個簡單的插入到表中? – Scott

+0

我不是很確定你在找什麼,因爲我和鋼都說過,你可以直接傳遞當前屬性的dict,顯然已經循環嵌套的字典爲每個項目創建一個字符串,你可以傳遞當前的子字典,如果你仍然有問題,你需要發佈完整的處理代碼和一個嵌套的JSON的例子 –

回答

0

取而代之的字符串,創建一個字典,然後直接把它傳遞給mysqltable:

mysqltable(**dictWithData) 

當然,你可以重新解析字符串到詞典,但是這是無用功......

+0

感謝您的回覆。我已經在主線程中做出了迴應,尋找了一個很好的示例,說明您在建議使用嵌套JSON。 – Scott

+0

你如何構造一個字符串?類似於「st + =」%s ='%s';「 %(jsonKey,jsonValue)'。相反,它使用'dictWithData [jsonKey] = jsonValue'。這會將鍵/值對添加到字典中,而不是字符串中。 –