在Tornado中连接MySQL数据库时遇到问题(OSX Lion;python 2.7.1)
我电脑上同时安装了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 个回答
我找到了这个问题的解决办法。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的数据访问库)?