【问题标题】:save data to sqlite from tweepy将数据从 tweepy 保存到 sqlite
【发布时间】:2016-05-23 19:03:43
【问题描述】:

我有这段代码可以将数据保存在 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()

【问题讨论】:

    标签: python mysql sqlite tweepy


    【解决方案1】:

    SQLITE3 解决方案:

    首先,创建一个数据库,我在这个例子中使用了 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()
    

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-10-15
        • 1970-01-01
        • 1970-01-01
        • 2011-09-11
        • 2011-02-14
        • 1970-01-01
        • 2019-11-16
        • 2013-01-18
        相关资源
        最近更新 更多