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で使用できますか?MySQLで動作するように記述されたtorndbパッケージを使用します。

したがって、PostgreSQLで使用する場合は、postgresql用に独自のtorndbパッケージを作成する必要があると思います。

編集: Tornado Wikiでわかるように、postgresqlラッパー(momokoまたはpsycopg)が必要です。さらに調査するためのリンクがいくつかあります。

EDIT2:Momokoの説明:
「トルネード用の非同期Psycopg2ラッパー」。

于 2012-12-01T18:45:10.220 に答える
3

tornado.database(3.0ではTornadoから分離されます)は軽量のMySQLラッパーです。MySQL以外はサポートしていません。

良いニュースは、@ sufleRが指摘したように、いくつかのオプションがあることです。pyscopgを直接使用することも、pyscopgの非同期ラッパーであるmomokoを使用することもできます。

于 2012-12-04T05:30:31.707 に答える