我想從連接到我的金字塔應用程序的數據庫中的條目創建一個Whoosh索引。但是,我並不確定如何在應用程序之外訪問數據庫。訪問WSGI實例外的金字塔數據庫
所以我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:[email protected]:3306/database?charset=utf8
所以main被稱爲當WSGI進程啓動時,它從.ini文件傳遞引擎。但是我想通過一個不依賴WSGI進程的腳本來訪問數據庫。我可以只分配引擎並將其綁定到腳本中的會話? extension=ZopeTransactionExtension()
如何影響會話?
如今金字塔文檔告訴你一切你需要知道的正確使用console_scripts的建議@madjar - http://pyramid.readthedocs.org/en/latest/narr/commandline.html#making-your-script-into- a-console-script –
我們可以使用pshell和正確的.ini文件(development.ini或production.ini)然後導入模型的DBSession等嗎?這對我行得通。我已經完成了。 –