我试图在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循环逻辑内)。
答案 0 :(得分:1)
[自我注释:记得阅读所有帖子中的单词:]
编辑:
除非关闭连接,否则流[不会]终止
计数测试不应该在监听器中吗?听起来Stream
的调用不会返回到while函数。
此num_rows = count_rows()
是否连续将num_rows重置为0?已发布的代码中没有任何迹象表明COUNT(*)
中的sentiments
发生了变化。这些推文是否已插入sentiment
表中?