use*_*478 6 python sql django postgresql python-db-api
我的 Django 应用程序正在使用一些自定义 SQL,我在这样的视图中执行:
db = router.db_for_write(model)
cursor = connections[db].cursor()
cursor.execute("INSERT INTO ....")
Run Code Online (Sandbox Code Playgroud)
由于我使用的是TransactionMiddleware,因此我的视图在事务中运行,但我不清楚获取像这样的新游标是否“转义”了当前打开的事务,或者游标是否仍然是打开事务的一部分。我收到一些错误消息,使我相信游标正在事务中运行。
我希望能够使用游标在由TransactionMiddleware. 这可能吗?
如果重要的话,我正在运行带有 PostgreSQL 8.4 数据库的 Django 1.4。
如果有一个视图需要手动管理事务,则应该使用该视图中的装饰器来commit_manually。
从文档中。
from django.db import transaction
@transaction.commit_manually
def viewfunc(request):
...
# You can commit/rollback however and whenever you want
transaction.commit()
...
# But you've got to remember to do it yourself!
try:
...
except:
transaction.rollback()
else:
transaction.commit()
@transaction.commit_manually(using="my_other_database")
def viewfunc2(request):
....
Run Code Online (Sandbox Code Playgroud)
是的,导入事务游标仅提供事务的游标,并不会创建新事务。
| 归档时间: |
|
| 查看次数: |
4496 次 |
| 最近记录: |