4

sqlalchemy が hstore 列と対話できるようにするこのコードhttps://gist.github.com/1859653を実装しようとしています。

その要旨のコメントで、psycopg2.extras.register_hstore を実行する必要性について言及されています。この関数を実行する必要があるのはいつですか? 私が行った場合:

@app.before_request
def reg_hstore() :
register_hstore(db.engine.raw_connection(), True)

「接続が多すぎます」というherokuエラー

psycopg2 の代わりに pghstore (http://pypi.python.org/pypi/pghstore) を使用することについても言及されていますが、設定方法は示されていません。

また、このアドオン コードで hstore インデックスの使用がサポートされているかどうかも疑問です。

4

2 に答える 2

4

これを試して:

from flaskext.sqlalchemy import SQLAlchemy
import psycopg2
import psycopg2.extras

class _SQLAlchemy(SQLAlchemy):
    def apply_driver_hacks(self, app, info, options):
        """This method adds option to support hstore on psycopg2"""

        if info.drivername == "postgres":
            def _connect():
                conn = psycopg2.connect(user=info.username,
                                        host=info.host,
                                        port=info.port,
                                        dbname=info.database,
                                        password=info.password)
                psycopg2.extras.register_hstore(conn)
                return conn
            options["creator"] = _connect
        SQLAlchemy.apply_driver_hacks(self, app, info, options)

以下も参照してください。

于 2012-10-02T03:31:53.197 に答える