【发布时间】:2015-03-05 03:25:26
【问题描述】:
我正在尝试使用 Tweepy 将推文存储在 MySQL 数据库中。代码工作正常,除了一旦我尝试执行 SQL 命令将数据插入数据库。代码如下:
#MySQL connection attempt
try:
cnx = mysql.connector.connect(**config)
cursor = cnx.cursor()
except mysql.connector.Error as err:
if err.errno == errorcode.ER_ACCESS_DENIED_ERROR:
print("Something is wrong with your user name or password")
elif err.errno == errorcode.ER_BAD_DB_ERROR:
print("Database does not exist")
else:
print(err)
class StdOutListener(StreamListener):
def on_data(self, data):
tweet = json.loads(data) #loads JSON data into list for python
#Parameters for SQL insert
try:
user_id = tweet['user']['id']
except IndexError:
print("Critical error: User ID not found")
return
try:
username = tweet['user']['screen_name']
except IndexError:
print("Critical error: Username not found")
return
try:
avatar = tweet['user']['profile_image_url']
except IndexError:
return
try:
tweet_id = tweet['id']
except IndexError:
print("Critical error: Tweet ID not found")
return
try:
content = tweet['text']
except IndexError:
print("Critical error: Tweet Content not found")
return
try:
#converts Twitter's date format into MySQL DATETIME
posted = time.strftime('%Y-%m-%d %H:%M:%S', time.strptime(tweet['created_at'],'%a %b %d %H:%M:%S +0000 %Y'))
except IndexError:
print("Critical error: created_at not found")
return
#MySQL insert query
try:
cursor.execute("INSERT INTO tweets (user_id, username, avatar, tweet_id, content, posted) VALUES (%%s, %%s, %%s, %%s, %%s, %%s)",(user_id, username, avatar, tweet_id, content, posted))
except RuntimeError:
print("Runtime error")
print("TEST")
cnx.commit()
return True
def on_error(self, status):
print(status)
if __name__ == '__main__':
l = StdOutListener()
auth = OAuthHandler(consumer_key, consumer_secret)
auth.set_access_token(access_token, access_token_secret)
stream = Stream(auth, l)
print("Starting Twitter Stream")
stream.filter(track=['bob'], languages=["en"])
然后,运行时出现以下错误:
Traceback (most recent call last):
File "C:/Users/Wilson/PycharmProjects/Avalon/Twitter.py", line 95, in <module>
stream.filter(track=['*', '**', '***', '****'], languages=["en"])
File "C:\Python34\lib\site-packages\tweepy\streaming.py", line 428, in filter
self._start(async)
File "C:\Python34\lib\site-packages\tweepy\streaming.py", line 346, in _start
self._run()
File "C:\Python34\lib\site-packages\tweepy\streaming.py", line 286, in _run
raise
RuntimeError: No active exception to reraise
我已将它隔离到执行 MySQL 查询的行。
【问题讨论】:
-
你用什么包来连接你的 MySQL 数据库?
标签: python python-3.x mysql-connector tweepy