2016-05-23 10 views
1

Ich habe diesen Code zum Speichern von Daten in CVS-Datei jetzt möchte ich diese Daten zu SQLite oder MySQL speichern, aber es sollte speichern, wie es in cvs eins nach dem anderen Datensatz in Datenbank und einem mehr speichert Frage diese Datengröße wird 30-40MB pro Tag sein, welche Datenbank ich mysql oder PostgresSql verwenden sollte, weil ich 1GB + Datenbank jeden Monat habe meine Idee ist, eine Website zu machen, die alle Statistiken von Trends haben, und ich möchte das mit django verwendenSpeichern von Daten in sqlite von tweepy

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() 

Antwort

0

sqlite3 Lösung:

zunächst erstellen DB, Ich habe in diesem Beispiel twitter2.db verwendet. Grund Verbindung zu Sqlite3 und Tabellenerstellung:

import sqlite3 

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

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

macht die Arbeit:

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']) 

Schließen der Verbindung:

conn.close()