【发布时间】:2012-02-16 19:00:59
【问题描述】:
我在 Django 之外使用 Django ORM 层。该项目是一个使用 cusotm 内部构建框架的 Web 应用程序。
现在,我可以将 Django ORM 设置为独立运行,但我有点担心连接管理。我已经在 SO 阅读了Using only DB part of Django,确实 Django 在每个请求的开始和结束时都会进行一些特殊的连接处理。来自django/db/__init__.py:
# Register an event that closes the database connection
# when a Django request is finished.
def close_connection(**kwargs):
for conn in connections.all():
conn.close()
signals.request_finished.connect(close_connection)
# Register an event that resets connection.queries
# when a Django request is started.
def reset_queries(**kwargs):
for conn in connections.all():
conn.queries = []
signals.request_started.connect(reset_queries)
# Register an event that rolls back the connections
# when a Django request has an exception.
def _rollback_on_exception(**kwargs):
from django.db import transaction
for conn in connections:
try:
transaction.rollback_unless_managed(using=conn)
except DatabaseError:
pass
signals.got_request_exception.connect(_rollback_on_exception)
如果我跳过此连接管理会遇到什么问题? (我无法轻松地将这些信号插入到我的框架中)
【问题讨论】:
-
连接管理问题;您粘贴的代码为您处理的类型。
-
@burhan 我的意思是,跳过这段代码安全吗?我知道有些人使用 Django ORM 作为独立的,他们可能会跳过这段代码,我想知道它是否正常工作。
标签: python database django database-connection django-orm