2013-11-08 4 views
0

Я не должен делать что-то прямо в моей петле. Ниже приведена сборка первой строки для файла и правильная добавка в db. Однако он не подходит ко второму, третьему и т. Д.Цитирование через файл Python

#Open file 
webFD=urllib2.urlopen("file") 
tweet = webFD.readline() 


#create dictionary 
dictt=json.loads(tweet) 

#add lines to db 
for elt in tweet: 
    currentRow = elt[:+1] 
c.execute('INSERT INTO Tweet VALUES (?, ?, ?, ?, ?, ?)', 
     (dictt['created_at'], dictt["id"], dictt["text"], dictt['source'], dictt['in_reply_to_user_id'],dictt['retweet_count'])) 
conn.commit() 
+0

Вы никогда не используете переменную currentRow, а также ваш оператор вставки находится за пределами цикла for. – kevinsa5

+0

@ kevinsa5. Благодарю. Не быть исправленным, но что бы я использовал вместо него? – mpg

+0

Вам необходимо выполнить итерацию по файлу. Прямо сейчас вы открываете файл, читаете одну строчку из него, делаете из него dict, делаете цикл (ничего не делаете, он создает переменную, которая никогда не используется), а затем делает одну вставку и фиксирует. Вам нужно открыть файл, затем сразу войти в цикл, создать dict для каждой строки в файле, вставить его, затем выйти из цикла и совершить. – kevinsa5

ответ

0

Вы вообще не зацикливаете файл. Файл, который вы загружаете, содержит много разных объектов JSON, и вам нужно пройти через них. Без цикла, конечно, он будет делать только одну запись. Кроме того, вы должны были сказать, что это была домашняя работа. Вот псевдокод:

import various libraries 
initialize sql database 
for each line in the file, parse the line (using json.loads) into a dict 
    insert the dict data into the database 
commit 

Вот еще один намек: Каждая запись JSON в файле представляет собой одну строку, но цикл по каждой строке в файле также будет возвращать пустые строки. Как вы можете с этим справиться?

Смежные вопросы