我正在尝试使用一个数据源来学习。我正在尝试从公共数据源获取数据,并将其传递到一个小的sqlite DB。
我有这个json结构:
[
{
"name": "Aachen",
"id": 1,
"nametype": "Valid",
"recclass": "L5",
"mass (g)": 21,
"fall": "Fell",
"year": "01/01/1880 12:00:00 AM",
"reclat": 50.775,
"reclong": 6.08333,
"GeoLocation": "(50.775, 6.08333)"
},
{
"name": "Aarhus",
"id": 2,
"nametype": "Valid",
"recclass": "H6",
"mass (g)": 720,
"fall": "Fell",
"year": "01/01/1951 12:00:00 AM",
"reclat": 56.18333,
"reclong": 10.23333,
"GeoLocation": "(56.18333, 10.23333)"
},]
到目前为止,我成功地使用了以下代码,但是如何正确读取数据呢?
此部分不起作用:
name = entry[0];
id = entry[1];
以下是我使用的代码的一部分:
import json
import sqlite3
conn = sqlite3.connect('rosterdb.sqlite')
cur = conn.cursor()
# Do some setup
cur.executescript('''
DROP TABLE IF EXISTS User;
DROP TABLE IF EXISTS Member;
DROP TABLE IF EXISTS Course;
CREATE TABLE User (
id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT UNIQUE,
name TEXT UNIQUE
);
CREATE TABLE Course (
id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT UNIQUE,
title TEXT UNIQUE
);
CREATE TABLE Member (
user_id INTEGER,
course_id INTEGER,
role INTEGER,
PRIMARY KEY (user_id, course_id)
)
''')
fname = raw_input('Enter file name: ')
if ( len(fname) < 1 ) : fname = 'meteorite.json'
str_data = open(fname).read()
json_data = json.loads(str_data)
for entry in json_data:
name = entry[0];
id = entry[1];
print name, id
发布于 2017-02-22 09:27:52
当你加载json时,你会得到一个列表中的json对象。所以您使用for循环迭代该列表
for item in json_data:
在这一点上,item引用了json对象而不是列表,您正在尝试通过使用
name = entry[0];
还有一件事,不要在python中使用(;)来结束语句,您正在使用它
你需要从字典中获取数据,应该是这样的
for item in json_data:
name=item.get('name')
id=item.get('id')
你的代码应该是这样的
import json
import sqlite3
conn = sqlite3.connect('rosterdb.sqlite')
cur = conn.cursor()
# Do some setup
cur.executescript('''
DROP TABLE IF EXISTS User;
DROP TABLE IF EXISTS Member;
DROP TABLE IF EXISTS Course;
CREATE TABLE User (
id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT UNIQUE,
name TEXT UNIQUE
);
CREATE TABLE Course (
id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT UNIQUE,
title TEXT UNIQUE
);
CREATE TABLE Member (
user_id INTEGER,
course_id INTEGER,
role INTEGER,
PRIMARY KEY (user_id, course_id)
)
''')
fname = raw_input('Enter file name: ')
if ( len(fname) < 1 ) : fname = 'meteorite.json'
str_data = open(fname).read()
json_data = json.loads(str_data)
for entry in json_data:
name=entry.get('name')
id=entry.get('id')
print name, id
https://stackoverflow.com/questions/42387434
复制相似问题