我需要创建一个新的数据库连接(会话)以避免 django 事务中的 MySql 过程意外提交。如何在django中设置它?
我尝试在设置文件中复制数据库配置。它对我有用,但似乎不是一个好的解决方案。有关更多详细信息,请参阅我的代码。
@classmethod
def get_sequence_no(cls, name='', enable_transaction=False):
"""
return the sequence no for the given key name
"""
if enable_transaction:
valobj = cls.objects.using('sequence_no').raw("call sp_get_next_id('%s')" % name)
return valobj[0].current_val
else:
valobj = cls.objects.raw("call sp_get_next_id('%s')" % name)
return valobj[0].current_val
有谁知道如何使用自定义数据库连接来调用该过程?
如果你看一下django.db
模块,你可以看到django.db.connection
是一个代理django.db.connections[DEFAULT_DB_ALIAS]
and django.db.connections
是一个实例django.db.utils.ConnectionHandler
.
将它们放在一起,您应该能够获得如下所示的新连接:
from django.db import connections
from django.db.utils import DEFAULT_DB_ALIAS, load_backend
def create_connection(alias=DEFAULT_DB_ALIAS):
connections.ensure_defaults(alias)
connections.prepare_test_settings(alias)
db = connections.databases[alias]
backend = load_backend(db['ENGINE'])
return backend.DatabaseWrapper(db, alias)
请注意,此函数每次调用时都会打开一个新连接,并且您负责关闭它。此外,它使用的 API 可能被视为内部 API,并且可能会更改,恕不另行通知。
要关闭连接,应该足以调用.close()
在对象返回上create_connection
功能:
conn = create_connection()
# do some stuff
conn.close()
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)