2017-03-10 72 views
0

我試圖創建一個存儲推文的SQLite數據庫。每天我都會調用API並獲得100k左右的推文以進行查詢。用SQLite中的Dict更新多個值(使用Python)

鑑於Twitter API會返回7天,並且某些推文的某些值必然會發生變化(轉推,收藏量等),我需要一種方法來更新已經在數據庫。

這是我如何添加新的鳴叫分貝(其中「解析」是類型的字典列表):

# query to add each tweet to the database 
for tweet in parsed: 
    c.execute("INSERT OR IGNORE INTO tweets VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)", 
       [tweet['id'], 
       tweet['url'], 
       tweet['created_at'], 
       tweet['hashtags'], 
       tweet['favorite_count'], 
       tweet['user_mentions'], 
       tweet['text'], 
       tweet['user_verified'], 
       tweet['user_following_count'], 
       tweet['retweet_count'], 
       tweet['user_name'], 
       tweet['user_id'], 
       tweet['user_screen_name'], 
       tweet['geo'], 
       tweet['lang'], 
       tweet['user_followers_count']] 
      ) 

這是查詢我到目前爲止更新微博:

update_tweet_query = '''UPDATE tweets 
    SET url = ? , 
    created_at = ? , 
    hashtags = ? , 
    favorite_count = ? , 
    user_mentions = ? , 
    text = ? , 
    user_verified = ? , 
    user_following_count = ? , 
    retweet_count = ? , 
    user_name = ? , 
    user_id = ? , 
    user_screen_name = ? , 
    geo = ? , 
    lang = ? , 
    user_followers_count = ? 
    WHERE id = ?''' 

但我不知道如何從這裏走...我在正確的軌道上?有一個更好的方法嗎?

在此先感謝!

回答

0

回答了我自己的問題...由於只有兩個值發生變化(最喜歡的次數和轉推次數),所以在更新每個值時沒有用處。因此,在解析數據時,我創建了另一個具有流體/動態值的字典,並使用以下內容更新了分貝:

update_query = 'UPDATE tweets SET favorite_count = ?, retweet_count = ? WHERE id = ?' 

for item in parsed[1]: 

    # parsed[1][0] = {'favorite_count': 0, 'id': 838564895905964033, 'retweet_count': 229} 

    curr_fav_count = item['favorite_count'] 
    curr_rt_count = item['retweet_count'] 
    curr_id = item['id'] 

    c.execute(update_query, (curr_fav_count, curr_rt_count, curr_id))