我想从连接到我的 Pyramid 应用程序的数据库中的条目中创建一个 Whoosh 索引。但是,我不确定如何在应用程序之外访问数据库。
所以我models.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
所以 main 在 WSGI 进程启动时被调用,它从 .ini 文件传递引擎。但我想通过一个不依赖 WSGI 进程的脚本来访问数据库。我可以分配引擎并将其绑定到脚本中的会话吗?对extension=ZopeTransactionExtension()
会话有何影响?