1

psycopg2.extensions.connectionSQLAlchemy で使用したいカスタム接続ファクトリ クラス (から継承) があります。create_engine()ドキュメントから、

**kwargs は、適切なコンポーネントにルーティングされるさまざまなオプションを取ります。引数は、エンジン、基礎となるダイアレクト、およびプールに固有のものである場合があります。特定の方言は、その方言に固有のキーワード引数も受け入れます。

次のように、connection_factory パラメーターを指定しようとすると、次のようになります。

engine = create_engine(dsn.engine_info(), connection_factory=ConnectionEx)

私はこのトレースバックを取得します:

Traceback (most recent call last):   File "foo.py", line 8, in <module>
    from user import test_user   File "/vagrant/workspace/panel/panel/user.py", line 18, in <module>
    from panel.helpers import intval   File "/vagrant/workspace/panel/panel/__init__.py", line 51, in <module>
    import panel.views   File "/vagrant/workspace/panel/panel/views.py", line 13, in <module>
    from panel.api import api_functions   File "/vagrant/workspace/panel/panel/api/api_functions.py", line 27, in <module>
    from panel.targeting import SavedTargetSet   File "/vagrant/workspace/panel/panel/targeting.py", line 19, in <module>
    from panel.database import panelists_tbl, us_cities_tbl, income_buckets_tbl   File "/vagrant/workspace/panel/panel/database.py", line 39, in <module>
    engine = create_engine(dsn.engine_info(), connection_factory=ConnectionEx)   File "/home/vagrant/.virtualenvs/project/lib/python2.6/site-packages/sqlalchemy/engine/__init__.py", line 331, in create_engine
    return strategy.create(*args, **kwargs)   File "/home/vagrant/.virtualenvs/project/lib/python2.6/site-packages/sqlalchemy/engine/strategies.py", line 141, in create
    engineclass.__name__)) TypeError: Invalid argument(s) 'connection_factory' sent to create_engine(), using configuration PGDialect_psycopg2/QueuePool/Engine.  Please check that the keyword arguments are appropriate for this combination of components.
4

1 に答える 1

4

ドキュメントが「適切なコンポーネント」について話している場合、さまざまなドライバーではなく、SQLAlchemy API のコンポーネントを参照しています。connection_factoryは に送信する必要があるパラメータであるため、 への呼び出しでconnect()キーワードを使用する必要があります(ドキュメントはこちらにも記載されています)。したがって:connect_argscreate_engine

engine = create_engine(
    dsn.engine_info(), connect_args={'connection_factory': ConnectionEx})
于 2013-01-11T11:13:27.050 に答える