在Tornado中连接MySQL数据库时遇到问题(OSX Lion;python 2.7.1)

0 投票
1 回答
850 浏览
提问于 2025-04-17 15:03

我电脑上同时安装了Tornado和XAMPP。之前我一直用PhpMyAdmin来处理所有的MySQL工作,但现在我想让它也能和Tornado一起使用。当我尝试通过Tornado连接MySQL时,出现了这个错误:

Traceback (most recent call last):
  File "__server.py", line 20, in <module>
    class Application(tornado.web.Application):
  File "__server.py", line 40, in Application
    password=options.mysql_password
  File "/Library/Python/2.7/site-packages/tornado-2.4.1-py2.7.egg/tornado/database.py",     line 59, in __init__
    args = dict(conv=CONVERSIONS, use_unicode=True, charset="utf8",
NameError: global name 'CONVERSIONS' is not defined

这个错误让我觉得Tornado认为我电脑上没有安装MySQL。

这里是Tornado相关的代码,来自于__server.py,如果这有帮助的话:

import tornado.database
import tornado.options
import unicodedata
from tornado.options import define, options

define("port", default=8888, help="run on the given port", type=int)
define("mysql_host", default="localhost", help="database host") #127.0.0.1:3306 – this was the      default (should I change it? I didn't get this far in the setup process to know)
define("mysql_database", default="Godzillian1", help="database name")
define("mysql_user", default="root", help="database user")
define("mysql_password", default="", help="database password")

class Application(tornado.web.Application):
    self.db = tornado.database.Connection(
        host=options.mysql_host, 
        database=options.mysql_database,
        user=options.mysql_user, 
        password=options.mysql_password
    )

所以我想问:我需要在Tornado的配置文件中改些什么吗?目前所有的MySQL文件都在我的XAMPP文件夹里。我觉得这可能有问题,但在我移动所有文件之前,我想先确认一下。或者,我需要完全“重新下载”MySQL吗?还是说问题出在Tornado的__server.py本身?(注意:为了方便,我把密码去掉了,设置了username=root,试图找到解决办法。)

编辑: 我已经成功安装了MySQL5(64位)和MySQL-Python,但我仍然遇到同样的错误NameError: global name 'CONVERSATIONS' is not defined。我应该安装32位的MySQL,以便与MySQL-Python兼容吗?(我以为Lion需要64位的MySQL……但现在我显然什么都不知道)。这真让人困惑!

非常感谢大家的想法。

1 个回答

0

我找到了这个问题的解决办法。MySQL-Python需要被正确地(重新)安装。我还需要把我的Python 2.7.1换成32位版本,而不是64位版本。在OSX Lion上,MySQL必须安装成64位的。要让它们兼容似乎不太容易,所以很多人选择的另一个可行办法是安装并使用MacPorts,然后使用这两个命令:

sudo port install py26-mysql 
sudo port install mysql5-server

无论如何,如果这些信息还不够详细,可以查看这个SO问题,里面有更全面的解决方案: 如何在Mac OS X上安装MySQLdb(Python访问MySQL的数据访问库)?

撰写回答