Python 带WSGI应用程序的Sqlalchemy布局

Python 带WSGI应用程序的Sqlalchemy布局,python,sqlalchemy,Python,Sqlalchemy,我正在使用和SqlAlchemy编写一个小的WSGI应用程序,对于我的应用程序的“布局”在SqlAlchemy中应该如何表示感到困惑 我的困惑在于创建引擎和会话。我的理解是,我应该只使用“create_engine”方法创建一个引擎。我是否应该以某种单例模式在全局命名空间中创建引擎实例,并基于它创建会话?您在项目中是如何做到这一点的 如有任何见解,将不胜感激。文档中的示例似乎没有完全清楚地说明这一点(除非我遗漏了一些明显的东西)。有什么想法吗?您不必手动创建引擎。对于web应用程序,最好使用作用

我正在使用和SqlAlchemy编写一个小的WSGI应用程序,对于我的应用程序的“布局”在SqlAlchemy中应该如何表示感到困惑

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


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

您不必手动创建引擎。对于web应用程序,最好使用作用域会话,它实际上是一个threadlocal,在单个请求期间使用

from sqlalchemy import MetaData
from sqlalchemy.orm import scoped_session, sessionmaker

session = scoped_session(sessionmaker())
metadata = MetaData('sqlite://') # or whatever: creates the engine for you
该引擎将作为
元数据.bind提供。

您不需要将会话绑定到引擎—这是可选的,请参阅。

pylons文档中详细介绍了您需要实现的功能:

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

链接中显示了
\uuuuu init\uuuuuuuuu.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()

你可以考虑这个模块A代码> Stutelon < /Cult>实现,如果你喜欢,因为它将在你第一次加载模块时为你做(加载和在多个Pythonic中的一个实例)。