【问题标题】:Unknown Database Error python mysql未知数据库错误 python mysql
【发布时间】:2015-02-05 04:06:06
【问题描述】:

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

__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

【问题讨论】:

  • 链接似乎在 gyazo 显示一个损坏的文件。
  • 对我来说似乎工作正常gyazo.com/d995c4da99043da43bfbd057a0a839c7
  • 要调试这样的东西,从数据库连接开始。确保您可以正确连接到数据库并关闭连接。一眼看去,您的连接字符串似乎没有正确指定。一旦你知道你可以连接,尝试一些简单的东西,比如单列上的 SELECT。
  • 建立连接是这里的问题,我只是尝试了一个简单的选择语句,就像你提到的那样,它没有执行,因为它甚至不承认数据库存在。我的语法有什么不正确的地方吗?

标签: python mysql database


【解决方案1】:

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

我不是 python 程序员,所以我不完全相信不做一些调整就能工作。

如果这些都没有给你一个很好的线索,我不太确定出了什么问题。

【讨论】:

  • 它说 mysql 不是终端上可识别的命令。我必须从特定目录键入它吗?
  • 似乎 mysql.exe 不在您的 PATH 环境变量中列出的文件夹中。重新启动你的 GUI 并确保一切仍然存在,或者寻找某种看起来特别的提交或保存按钮。
  • 您的 GUI 应用程序可能有一个窗口,您可以在其中手动编写命令并执行它们。那将是输入use tweetinfo;show create table twtinfo; 的好地方。它可能会被命名为MySQL query window 或类似的名称。
  • 在您打开的 MySQL Workbench 中,在您的屏幕截图中可见,有两个名为“Local instance MySQL56”的选项卡。你确定你没有运行两个 MySQL 进程,并且你的 python 代码连接到错误的进程吗?
  • 问题是我没有在正在运行的 mysql 服务器实例上创建架构。我将它设置为一个模型,它可能在没有连接的情况下存在。现在我还有其他麻烦,但至少我知道现在连接仍然存在。谢谢! gyazo.com/816e7c8f253593f763561798c2d65075
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-08-15
  • 2018-12-17
  • 2015-01-08
  • 1970-01-01
  • 2020-06-25
  • 1970-01-01
相关资源
最近更新 更多