Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/365.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python tweepy写入sqlite3数据库_Python_Tweepy - Fatal编程技术网

Python tweepy写入sqlite3数据库

Python tweepy写入sqlite3数据库,python,tweepy,Python,Tweepy,我下面的脚本(取自各种在线资源)没有写入数据库。我没有得到任何错误,如果我注释掉数据库行,那么它将毫无问题地输出到控制台 数据库存在,它有2个字段,可由我写入。。。。有什么想法吗 更新代码如下 #!/usr/bin/env python import sys import tweepy from textwrap import TextWrapper import sqlite3 CONSUMER_KEY = '' CONSUMER_SECRET = '' ACCESS_KEY = '' A

我下面的脚本(取自各种在线资源)没有写入数据库。我没有得到任何错误,如果我注释掉数据库行,那么它将毫无问题地输出到控制台

数据库存在,它有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)

首先,修复缩进。你没有得到任何错误,因为你明确地使他们沉默!与

except Exception, e:
    # Catch any unicode errors while printing to console
    # and just ignore them to avoid breaking application.
    pass

这将捕获
try:except:
块中发生的任何异常。阅读Python教程是一项非常重要的任务,您想这样做吗:

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))
在第一种情况下,
光标
未声明


此外,正如lqc指出的,您可以消除所有错误。不要捕捉任何异常以查看发生了什么或将其更改为更具体的内容(如
UnicodeError
)。

如果确实
cur
在您的try块中,那么您可能希望传递到
游标。执行(“…”,(status.text,))
-注意后面的逗号,使其成为一个元组。您需要缩进\u status块上的
(它当前不是StreamListener类的一部分,在您的代码中从未调用过)。谢谢。修改了顶部的脚本-现在出现错误406。在我结束之前有什么想法吗?谢谢。谢谢回复-更新代码。没有错误,但记录无法显示在db中。
cur.execute('INSERT INTO tweets(text,date)值(?),(status.text,)
您输入了一个值,但有两个值?'。试着插入一些常量,看看它是否有效,我们就会知道这是评论还是tweepy的问题。