Pyramid アプリケーションに接続されたデータベースのエントリから Whoosh インデックスを作成したいと考えています。ただし、アプリケーションの外部でデータベースにアクセスする方法がよくわかりません。
したがって、 mymodels.py
は次のように初期化されます。
from sqlalchemy import (
Column,
Integer,
Text,
String,
ForeignKey,
Table
)
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import (
scoped_session,
sessionmaker,
relationship,
backref
)
from sqlalchemy.dialects.mysql import DATETIME, FLOAT, TEXT
from zope.sqlalchemy import ZopeTransactionExtension
db_session = scoped_session(sessionmaker(extension=ZopeTransactionExtension()))
dbBase = declarative_base()
dbBase.query = db_session.query_property()
次に__init__.py
、モデルへのロードの例を示します。
from pyramid.config import Configurator
from sqlalchemy import engine_from_config
from .models import db_session, Recipe
def main(global_config, **settings):
""" This function returns a Pyramid WSGI application.
"""
engine = engine_from_config(settings, 'sqlalchemy.')
db_session.configure(bind=engine)
私production.ini
のエンジンの割り当てがあります:
sqlalchemy.url = mysql+pymysql://username:password@localhost:3306/database?charset=utf8
そのため、.ini ファイルからエンジンを渡す WSGI プロセスの開始時に main が呼び出されます。しかし、WSGI プロセスに依存しないスクリプトを使用してデータベースにアクセスしたいと考えています。エンジンを割り当てて、スクリプト内のセッションにバインドすることはできますか? セッションにどのようにextension=ZopeTransactionExtension()
影響しますか?