我正在编写一个管理命令,希望在其中更改默认隔离级别。Django和我的数据库将默认为“READ COMITTED”,我需要它是“READ UNCOMMITTED”,仅对于这个特定的管理命令。在
运行时:
./manage.py my_command
我注意到,即使您的命令不需要任何数据库连接,Django默认情况下都会使用默认隔离级别打开事务:
^{pr2}$这种行为不符合我的问题,我想问是否有办法:
编写一个管理命令,其中Django甚至不接触数据库,让所有事务控制完全由手动完成?
编写一个管理命令,在这里您只能为它定义事务特征?
问候
我在Facebook上看到你的帖子,我想我可以帮上忙:-)
您可以使用
settings.py
中的以下数据库设置指定未提交读的数据库连接:这样,您就可以使用Django的普通多数据库语法访问非事务性数据库连接:
^{pr2}$当然,您可能不希望非事务性数据库连接在整个应用程序中全局可用,因此理想情况下,您希望有一种方法,使其仅在执行此管理命令期间可用。不幸的是,管理命令不是这样工作的:一旦您在
Command
类上点击了handle
方法,您的settings.py
已经被解析,并且您的数据库连接已经创建。如果您可以找到一种方法,在运行后使用一组新的数据库设置重新初始化Django,或者根据启动条件在settings.py
中进行逻辑拆分,例如:这可能有用,但太可怕了!在
相关问题 更多 >
编程相关推荐