2012-12-01 45 views
2

我使用演示从facebook's tornado龙卷风和PostgreSQL

但我不打算使用MySQL,并试图与PG 来取代它,所以我继续和修改是这样的:

define("port", default=8888, help="run on the given port", type=int) 
define("pgsql_host", default="127.0.0.1:5432", help="blog database host") 
define("pgsql_database", default="pgdb", help="blog database name") 
define("pgsql_user", default="admin", help="blog database user") 
define("pgsql_password", default="pgpass", help="blog database password") 

 # Have one global connection to the blog DB across all handlers 
    self.db = tornado.database.Connection(
     host=options.pgsql_host, database=options.pgsql_database, 
     user=options.pgsql_user, password=options.pgsql_password) 

但是,当我运行它时,应用程序只是挂起,如何正确地将其迁移到PG?

其实我得到的错误了一段时间后:

Traceback (most recent call last): 
    File "/usr/local/lib/python2.7/dist-packages/tornado-2.4.1-py2.7.egg/tornado/database.py", line 84, in __init__ 
    self.reconnect() 
    File "/usr/local/lib/python2.7/dist-packages/tornado-2.4.1-py2.7.egg/tornado/database.py", line 101, in reconnect 
    self._db = MySQLdb.connect(**self._db_args) 
    File "/usr/lib/pymodules/python2.7/MySQLdb/__init__.py", line 81, in Connect 
    return Connection(*args, **kwargs) 
    File "/usr/lib/pymodules/python2.7/MySQLdb/connections.py", line 187, in __init__ 
    super(Connection, self).__init__(*args, **kwargs2) 
OperationalError: (2013, "Lost connection to MySQL server at 'reading initial communication packet', system error: 0") 

为什么连接到MySQL?

+0

你有安装postgresql包装(例如momoko)与龙卷风一起使用吗? – sufleR

回答

7

您确定可以将它与包括PostgreSQL在内的不同RDBMS一起使用吗? 它使用torndb包写入MySQL的工作。

所以我认为如果你想使用PostgreSQL,你应该为postgresql编写自己的torndb包。

编辑: 正如你可以看到Tornado Wiki你必须有PostgreSQL的包装(momokopsycopg)还有待进一步研究一些链接。

EDIT2:Momoko description:
“Tornado的异步Psycopg2包装器”。

3

tornado.database(将在3.0版本中拆分出Tornado)是一个轻量级的MySQL包装。它不支持MySQL以外的任何其他功能。

好消息是,正如@ sufleR指出的那样,您有一些选择。您可以直接使用pyscopg,也可以使用momoko,这是pyscopg的异步包装。

+0

+1为momoko - 其积极维护和与最近版本的龙卷风,蟒蛇和各种psycopg2克隆的作品。 –