【发布时间】:2011-09-30 04:58:25
【问题描述】:
我将我的 Django 应用程序更改为使用 SQLAlchemy,它现在可以工作了。
但我想知道我应该把这些行放在哪里:
engine = sqlalchemy.create_engine(settings.DATABASE_URL)
Session = sqlalchemy.orm.sessionmaker(bind=engine)
session = Session()
我问的原因是因为我想在很多地方使用 SQLAlchemy,我认为每次我需要使用数据库时调用这三行代码并不正确/强大/编写良好。
我需要 SA 的地方是:
- 在我看来,当然
- 在我写的一些中间件中
- 在我的模型中。就像在
get_all_tags中的 BlogPost 模型一样。
我认为正确的是获取会话,如果会话关闭则重新连接到数据库,或者如果存在则返回当前连接的会话。
如何在我的 Django 应用中正确使用 SQLAlchemy?
感谢您的帮助!
注意:我已经按照本教程将 SA 实现到我的 Django 应用程序中,但是这篇并没有告诉我将这 3 行放在哪里 (http://lethain.com/entry/2008/jul/23/replacing-django-s-orm-with-sqlalchemy/)。
【问题讨论】:
-
请原谅我问你为什么一开始就放弃 Django 的模型系统。 (我很想知道为什么。)
-
搜索startup code 的放置位置,也许这个模块可以帮助你:sqlahelper
-
如果您的模型需要访问会话,那么您的模型错误,会话与模型处于不同的抽象层
-
@Chris Morgan:使用 sqlalchemy 不需要切换整个框架。 Django 只是松散地与它的 orm 耦合。 Sqlalchemy 比 django 的 orm 强大一点,但 django 的其他一些部分与原生 orm 很好地集成,因此如果不了解具体应用程序,很难说这是否是一个不错的选择。
-
我刚刚找到了django-sqlalchemy 项目。我不知道它是否适合您的需求,但绝对值得一读。
标签: python django sqlalchemy