从tweepy将数据保存到sqlite

时间:2016-05-23 19:03:44

标签: python mysql sqlite tweepy

我有这个代码来保存cvs文件中的数据现在我想将这些数据保存到sqlite或mysql但它应该保存就像它在cvs中一个一个地保存在数据库中的记录 还有一个问题 这个数据大小将是每天30-40MB数据库我应该使用mysql或PostgresSql导致我每月有1GB +数据库 我的想法是建立一个拥有所有趋势统计数据的网站,我想用django

import tweepy
import csv #Import csv
auth = tweepy.auth.OAuthHandler('XXXXXX', 'XXXXXXX')
auth.set_access_token('XXX-XXX', 'XXX')

api = tweepy.API(auth)
# Open/Create a file to append data
csvFile = open('result.csv', 'a')
#Use csv Writer
csvWriter = csv.writer(csvFile)

for tweet in tweepy.Cursor(api.search, 
                    q="google", 
                    since="2016-05-22", 
                    until="2016-05-23", 
                    lang="en").items():
    #Write a row to the csv file/ I use encode utf-8
    csvWriter.writerow([tweet.created_at, tweet.text.encode('utf-8')])
    print tweet.created_at, tweet.text
csvFile.close()

2 个答案:

答案 0 :(得分:0)

SQLITE3解决方案:

首先,创建一个DB,我在这个例子中使用了twitter2.db。与SQLITE3和表创建的基本连接:

import sqlite3

conn = sqlite3.connect('C:\\....\\twitter2.db')
c = conn.cursor()

c.execute("CREATE TABLE tweeter(text VARCHAR, created_at DATETIME")

完成工作:

import tweepy
import sqlite3


conn = sqlite3.connect('C:\\....\\Desktop\\twitter2.db')
x = conn.cursor()
consumer_key="..."
consumer_secret=".."
access_token=".."
access_token_secret=".."

auth = tweepy.OAuthHandler(consumer_key, consumer_secret)
auth.set_access_token(access_token, access_token_secret)
api = tweepy.API(auth)

class CustomStreamListener(tweepy.StreamListener):
    def __init__(self, api):
        self.api = api
        super(tweepy.StreamListener, self).__init__()


    def on_status(self, status):
            x.execute("""INSERT INTO tweeter (text,created_at) VALUES(?,?)""",
          (status.text, status.created_at))
            conn.commit()   

    def on_error(self, status_code):
        print >> sys.stderr, 'Encountered error with status code:', status_code
        return True

    def on_timeout(self):
        print >> sys.stderr, 'Timeout...'
        return True


sapi = tweepy.streaming.Stream(auth, CustomStreamListener(api))
sapi.filter(track=['google'])

关闭连接:

conn.close()

答案 1 :(得分:0)

根据您的要求,我相信MySQL是理想的。它为您提供安全性,最适合您希望构建的Web应用程序。