使用WSGI应用程序的Sqlalchemy布局

The*_*ude 4 python sqlalchemy

我正在使用Bottle和SqlAlchemy 编写一个小的WSGI应用程序,并且对于我的应用程序的"布局"应该如何在SqlAlchemy方面感到困惑.

我的困惑在于创建引擎和会话.我的理解是我应该只使用'create_engine'方法创建一个引擎.我应该以某种单例模式在全局命名空间中创建引擎实例并根据它创建会话吗?你是如何在你的项目中做到这一点的?

任何见解将不胜感激.文档中的示例似乎没有完全清楚(除非我遗漏了一些明显的东西).有什么想法吗?

van*_*van 6

您需要实现的内容在pylons文档中有详细描述:定义表和ORM类:

该模型由两个文件组成:__init__.py和meta.py. __init__.py包含您的表定义和ORM类,以及必须在应用程序启动时调用的init_model()函数.meta.py只是SQLAlchemy的内务对象(会话,元数据和引擎)的容器,并非所有应用程序都会使用它.

该示例__init__.py显示在链接中,而meta.py外观类似于:

from sqlalchemy import MetaData
from sqlalchemy.orm import scoped_session, sessionmaker
__all__ = ['Session', 'engine', 'metadata']
engine = None
Session = scoped_session(sessionmaker())
metadata = MetaData()
Run Code Online (Sandbox Code Playgroud)

singleton如果您愿意,可以将此模块视为一个实现,因为它将在您第一次加载模块时为您完成(加载并在更多Pythonic中具有一个实例).