如何将 JSON 文件导入 Django 数据库?
Posted
技术标签:
【中文标题】如何将 JSON 文件导入 Django 数据库?【英文标题】:How can I import JSON file to Django database? 【发布时间】:2014-12-06 17:07:22 【问题描述】:我正在学习 django 和 javascript。我有一个具有以下语法的 json 文件:
"business_id": "JwUE5GmEO-sH1FuwJgKBlQ", "full_address": "6162 US Highway 51\nDe Forest, WI 53532", "hours": , "open": true, "categories": ["Restaurants"], "city": "De Forest", "review_count": 26, "name": "Pine Cone Restaurant", "neighborhoods": [], "longitude": -89.335843999999994, "state": "WI", "stars": 4.0, "latitude": 43.238892999999997, "attributes": "Take-out": true, "Good For": "dessert": false, "latenight": false, "lunch": true, "dinner": false, "breakfast": false, "brunch": false, "Caters": false, "Noise Level": "average", "Takes Reservations": false, "Delivery": false, "Ambience": "romantic": false, "intimate": false, "touristy": false, "hipster": false, "divey": false, "classy": false, "trendy": false, "upscale": false, "casual": false, "Parking": "garage": false, "street": false, "validated": false, "lot": true, "valet": false, "Has TV": true, "Outdoor Seating": false, "Attire": "casual", "Alcohol": "none", "Waiter Service": true, "Accepts Credit Cards": true, "Good for Kids": true, "Good For Groups": true, "Price Range": 1, "type": "business"
我想将它导入 django 数据库。我试过了:
def import_db(request):
f = open('business_out.json', 'r')
for jsonline in f:
#yield json.loads(jsonline)
data = serializers.serialize("json", jsonline)
print data["business_id"]
在localhost://import_db
的这一行出现错误:
data = serializers.serialize("json", jsonline)
Uncaught TypeError: Cannot read property 'key-preview' of undefined klippy.js:163Class.keyup klippy.js:163wrapper.extend.$owner mootools-core.js:1367defn mootools-core.js:3970
【问题讨论】:
错误是什么?这对回答您的问题非常有帮助。 【参考方案1】:serializers.serialize
将模型数据“翻译”为 JSON,但您需要反之亦然 - 将 json 加载到 DB。
你需要这样的东西:
with open('business_out.json') as f:
data = json.load(f)
然后你会得到一个带有数据的dict,你可以用它来操作。
【讨论】:
感谢为具有单个对象的文件工作。但对同一对象的多行有效。 这将适用于所有包含 json 的文件,之后您可以根据需要解析数据。以上是关于如何将 JSON 文件导入 Django 数据库?的主要内容,如果未能解决你的问题,请参考以下文章