【发布时间】:2012-10-13 17:04:24
【问题描述】:
我想从连接到我的 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中,有一个models中加载的例子:
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
所以当 WSGI 进程启动时调用 main,它从 .ini 文件传递引擎。但我想通过一个不依赖 WSGI 进程的脚本来访问数据库。我可以只分配引擎并将其绑定到脚本中的会话吗? extension=ZopeTransactionExtension() 对会话有何影响?
【问题讨论】:
标签: python sqlalchemy pyramid