从Twitter(使用Tweepy和Python)流式推文,并存储在SQLite数据库中,直到处理了N个推文为止

时间:2018-11-27 12:26:25

标签: python database sqlite twitter tweepy

我试图在SQLite数据库表(“情感”)中存储N条推文(通过关键字“ Trump”过滤)。为此,我编写了一个函数“ count_rows”,该函数返回存储在该表中的整数行(每行对应一条tweet)。使用这个整数作为准确达到N条推文的临界点,我试图在while循环内流推文(请参见下文):

N = 100

def count_rows():
    count_SQL = """SELECT COUNT(*) FROM sentiment"""
    c.execute(count_SQL)
    return c.fetchall()[0][0]

num_rows = count_rows()  # Starts at value: zero
while num_rows <= N:
    try:
        auth = OAuthHandler(ckey, csecret)
        auth.set_access_token(atoken, asecret)
        twitterStream = Stream(auth, listener())
        twitterStream.filter(track=["Trump"])
        # num_rows = count_rows()
    except Exception as e:
        print(str(e))
        time.sleep(5)
    num_rows = count_rows()

挑战在于,流永远持续下去,而while循环是无限的。我究竟做错了什么?我是否以错误的方式使用count_rows()? (函数count_rows()本身可以正常工作,因此该错误必须在我认为的while循环逻辑内)。

1 个答案:

答案 0 :(得分:1)

[自我注释:记得阅读所有帖子中的单词:]

编辑:

tweepy doc:

  

除非关闭连接,否则流[不会]终止

计数测试不应该在监听器中吗?听起来Stream的调用不会返回到while函数。


num_rows = count_rows()是否连续将num_rows重置为0?已发布的代码中没有任何迹象表明COUNT(*)中的sentiments发生了变化。这些推文是否已插入sentiment表中?