2

我正在使用来自facebook 的龙卷风的演示

但我不想使用 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?

4

2 回答 2

7

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

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

编辑:正如您在Tornado Wiki上看到的,您必须拥有 postgresql 包装器(momokopsycopg),有一些链接可供进一步研究。

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

于 2012-12-01T18:45:10.220 回答
3

tornado.database(将在 3.0 中脱离 Tornado)是一个轻量级的 MySQL 包装器。它不支持 MySQL 以外的任何东西。

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

于 2012-12-04T05:30:31.707 回答