2015-02-04 84 views
0

此链接包含显示我在mysql工作台中创建的数据库以及我在代码中建立的连接,但由于某种原因数据库未知。我错过了一个步骤吗? http://gyazo.com/d995c4da99043da43bfbd057a0a839c7未知数据库错误python mysql

__author__ = 'avi' 

from TwitterSearch import * 
import json 

twtsearch = TwitterSearch(
    consumer_key='PXTUrlRfgC1zSTsAPU9z6EHtD', 
    consumer_secret='qM9F4FVj1qLFc6f795r96DQPNAJO8hkbWy4PXWYLfQcYyNGY7D', 
    access_token='2943116292-wVHEjbfjX7OFqaOURBqim5o7Vs6lZyjxsoto8nD', 
    access_token_secret='CJAppSRY9TZ5cwYTABZhH2YTd0rm5IzBDqPder6v4qLBA' 
    ) 

twtsearchorder = TwitterSearchOrder() 
twtsearchorder.set_keywords(['iphone6']) 
twtsearchorder.set_language('en') 
twtsearchorder.set_include_entities(True) 


tweet_limit=50 
parsed_tweets= {} 
table="twtinfo" 
import MySQLdb as mdb 

con = mdb.connect('localhost', 'root','root','tweetinfo') 
cur=con.cursor() 

for tweet in twtsearch.search_tweets_iterable(twtsearchorder): 
    if tweet_limit > 0 : 
     parsed_tweets['name'] = tweet['user']['screen_name'] 
     parsed_tweets['content'] = tweet['text'] 
     parsed_tweets['user_id'] = tweet['user']['id'] 
     parsed_tweets['fav_count'] = tweet['favorite_count'] 
     parsed_tweets['location'] = tweet['user']['location'] 
     parsed_tweets['retweet_count'] = tweet['retweet_count'] 
     placeholders= ', '.join(['%s'] *len(parsed_tweets)) 
     columns = ', '.join(parsed_tweets.keys()) 
     sql="INSERT into %s (%s) VALUES (%s)" % (table, columns, placeholders) 
     cur.execute(sql,parsed_tweets.values()) 
     tweet_limit -= 1 
+0

链接似乎显示在gyazo一个破损的文件。 – Emanuel

+0

似乎对我很好http://gyazo.com/d995c4da99043da43bfbd057a0a839c7 – user3204064

+0

要调试这样的事情,从数据库连接开始。确保您可以正确连接到数据库并关闭连接。从快速浏览,它看起来像您的连接字符串可能没有正确指定。一旦你知道你可以连接,尝试一些简单的东西,比如单列上的SELECT。 – Jesuisme

回答

0

MySQL进程抱怨你试图访问数据库,即tweetinfo是不存在的。 MySQL错误1049通常是不必忘记选择一个数据库的指示,但你没有作为第四参数mdb.connect()

可能的错误可能是:

  • 您已经运行几个MySQL的过程中,与一个正确的数据库不在默认的MySQL端口上。
  • 不知何故,你的数据库GUI应用程序还没有实际提交你的数据库和表到MySQL进程。
  • MySQL没有运行?你可能会得到一个不同的错误信息,但它可能是一个想法,以确保它以防万一。

只是为了检查,如果你的表是否存在,你的数据库是在地方,打开一个终端,写了下面的命令:

mysql -u root -proot 
use tweetinfo; 
show create table twtinfo; 

另一件事尝试可能会问MySQL进程哪些它认为你正在使用的数据库。尝试添加如下代码到您的代码:

cur.execute("SELECT DATABASE() FROM DUAL;") 
print("Database is: %s.", cur.fetchone()[0]) 

我不是一个蟒蛇程序员,所以我不完全有信心,将无需一些调整工作。

如果这些都不能给你带来好的结果,我不太确定有什么问题。

+0

它说mysql不是终端上的公认命令。我是否必须从特定目录键入它? – user3204064

+0

看来mysql.exe不在PATH环境变量中列出的文件夹中。重新启动GUI并确保所有东西仍然存在将会有另一种方式,或者寻找某种类似提交或保存按钮,看起来很特殊。 – Emanuel

+0

您的GUI应用程序可能有一个窗口,您可以在其中手动编写命令并执行它们。这将是输入'use tweetinfo;'和'show create table twtinfo;'的好地方。它可能会被命名为“MySQL查询窗口”或类似的东西。 – Emanuel