0

以下のスクリプト (オンラインのさまざまなリソースから取得) は、データベースに書き込みを行っていません。エラーは発生しません。データベース行をコメントアウトすると、問題なくコンソールに出力されます。

データベースが存在し、2 つのフィールドがあり、私が書き込み可能です.... 何かアイデアをお願いします。

以下の更新されたコード

#!/usr/bin/env python

import sys
import tweepy
from textwrap import TextWrapper
import sqlite3

CONSUMER_KEY = ''
CONSUMER_SECRET = ''
ACCESS_KEY = ''
ACCESS_SECRET = ''


auth1 = tweepy.auth.OAuthHandler(CONSUMER_KEY,CONSUMER_SECRET)
auth1.set_access_token(ACCESS_KEY,ACCESS_SECRET)
api = tweepy.API(auth1)
conn = sqlite3.connect('twitter.db')
cur = conn.cursor()

class StreamListener(tweepy.StreamListener):
    status_wrapper = TextWrapper(width=60, initial_indent='    ', subsequent_indent='    ')



    def on_status(self, status):
        try:
            cur.execute('INSERT INTO tweets (text, date) VALUES (?, ?)' ,(status.text,))
            print self.status_wrapper.fill(status.text)
            print '\n %s  %s  via %s\n' % (status.author.screen_name, status.created_at, status.source)
            conn.commit()   
        except Exception, e:
            print >> sys.stderr, 'Encountered Exception:', e

    def on_error(self, status_code):
            print >> sys.stderr, 'Encountered error with status code:', status_code
            return True # Don't kill the stream

    def on_timeout(self):
            print >> sys.stderr, 'Timeout...'
            return True # Don't kill the stream


streamer = tweepy.Stream(auth1, StreamListener(), timeout=None)
setTerms = ['news','hello']
streamer.filter(setTerms)
4

2 に答える 2

0

これを実行しますか:

cur = conn.cursor()
cursor.execute('INSERT INTO tweets (text, date) VALUES (?, NOW())' ,(status.text))

またはこれ:

cur = conn.cursor()
cur.execute('INSERT INTO tweets (text, date) VALUES (?, NOW())' ,(status.text))

最初のケースcursorでは宣言されていません。

また、lqcが指摘したように、すべてのエラーを沈黙させます。何が起こっているかを確認したり、より具体的なもの(など)に変更したりするために、例外をキャッチしないでくださいUnicodeError

于 2012-07-11T12:48:20.560 に答える