2016-02-07 61 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'。这会将键/值对添加到字典中,而不是字符串中。 –