2017-08-02 138 views
0

我用Twitter API很難,我使用下面的代碼來獲取一些推文,但每次我得到不同數量的推文(它實際上取決於幾個參數應用:朗,流行/最近,過濾器等。)如何使用sqlite和rowcount計算for循環中的記錄

for tweet in tweepy.Cursor(api.search,q=str(keyword), 
     result_type='recent', lang="en").items(num_tweets): 

這裏的目標是有許多的鳴叫(在這個例子中是10與50已經從Twitter的要求)數據庫文本處理後,計算等。

我正在使用此代碼,但我不確定是否包含2 if語句的最佳方法,我不知道在哪裏把空名單..

num_tweets = 50 
    final = tweet.text 

    words = len(final.split()) # To delete short tweets 
    nline = keyword,final  # Values for db 

    if (words > 15): 
     cursor.execute('INSERT OR IGNORE INTO tweets (keyword, tweet) VALUES (?, ?)', (nline)) 
     conn.commit() 

     rows_affected=cursor.rowcount 
     # print (rows_affected) 

     if (rows_affected == 1): 
      stored = [] 
      exact = len(stored) 
      stored.append(final) 
      print ('Tweet Stored') 
      print (len(stored)) 


     else: 
      pass 

      if (exact < 10): 
       # print (exact) 
       continue 
      else: 
       break 

如果我的代碼發現只有9鳴叫和stored列表永遠達不到期望的結果是什麼?我應該使用類似=<的東西嗎?

我的嘗試是在INSERT添加LIMIT 10到DB代碼...並使用rowcount

+0

你需要理清任何語法錯誤,這樣就可以運行代碼並向我們提供實際的輸出**和**所需的輸出。 – quamrana

+0

@quamrana對不起,我更新了問題,實際上它工作正常(沒有語法錯誤),但只有9條推文存儲在數據庫中。 – Blacksun

+0

您現在已將您的作業遺失爲'exact',但我懷疑您沒有積累計算您在所有迭代中總共存儲的推文數量。 – quamrana

回答

0

我找到了解決辦法:

num_tweets = 50 
keyword = "Aventador" 

stored = [] 
exact = len(stored) 

for tweet in tweepy.Cursor(api.search,q=str(keyword), result_type='recent', lang="en").items(num_tweets): 
    final = tweet.text 

    words = len(final.split()) 
    nline = keyword,final 
    all.append(final) 

    if (words > 15): 
     rows_affected=cursor.rowcount 
     cursor.execute('INSERT OR IGNORE INTO tweets (keyword, tweet) VALUES (?, ?)', (nline)) 
     conn.commit() 

     # print (rows_affected) 

     if (rows_affected == 1): 
      stored.append(final) 
      print ('Tweet Stored')   
     else: 
      pass 

    if (len(stored) < 10): 
     print ('Continue') 
     continue 
    else: 
     print ('Script Break!') 
     break 

print (' ') 
print ('Number of Tweets fetched:') 
print (len(all)) 

print (' ') 
print ('Stored Tweets:') 
print (len(stored)) 
+0

所以你最終做了什麼與if語句和更多關於將'stored = []'放置在循環外部沒有太大關係。 – quamrana

+0

@quamrana是的,這是我第一次使用很多變量。謝謝btw。 – Blacksun