我正在收集twitter流,并将它存储在sqlite db.Since中,流正在到来,数据库越来越大,我执行了一个命令来删除比minute.But更老的tweet,这里只有tweet,而且数据库正在获得bigger.Please帮助,因为我对sqlite还不熟悉。
这是密码
class listener(StreamListener):
def on_data(self,data):
try:
data = json.loads(data)
tweet = unidecode(data['text'])
text = preprocess(tweet)
score = predict(text)['score']
created_at = data['created_at']
c.execute('INSERT INTO sentiment (created_at,tweet,score) VALUES (?,?,?)',(created_at,tweet,score))
conn.commit()
c.execute('DELETE FROM sentiment WHERE created_at IN(SELECT created_at FROM(SELECT
created_at, strftime("%s","now") - strftime("%s",created_at) AS passed_time FROM
sentiment WHERE passed_time >=60))')
conn.commit()
except Exception as e:
print(str(e))发布于 2020-10-03 16:20:24
您正在测试IN子查询,这反过来又有一个子查询,并且您抱怨这种复杂的方法不起作用,in在您的“自1970年以来的秒”时间戳中没有找到匹配项。
好的。你的规格比那简单得多,你说你想要
删除超过一分钟的tweet的命令
小菜一碟。跟着那个英语句子,把它转换成SQL:
DELETE FROM sentiment WHERE created_at < strftime('%s', 'now') - 60;当前时间减60秒是一分钟前,WHERE子句要求的行要比这更早。
https://stackoverflow.com/questions/64186232
复制相似问题