Django TestCase 不使用辅助数据库上的事务

2023-11-23

我正在使用 Django 1.3.1。我有两个数据库,我的一些模型位于一个数据库中,一些模型位于另一个数据库中。这两个数据库都是 contrib.gis.db.backends.postgis 数据库。

令我惊讶的是,Django 的 TestCase 并没有回滚我在测试之间在辅助数据库中所做的更改。

在下面的代码中,myproject.models.WellOwner 是一个非常简单的模型,基本上只有一个字段“名称”。路由器说它应该在辅助数据库中。第一个测试中的断言成功,第二个测试失败:

from django.test import TestCase
from myproject.models import WellOwner

class SimpleTest(TestCase):
    def test1(self):
        WellOwner.objects.create(name="Remco")
        self.assertEquals(1, WellOwner.objects.count())  # Succeeds

class SimpleTest2(TestCase):
    def test2(self):
        # I would expect to have an empty database at this point
        self.assertEquals(0, WellOwner.objects.count())  # Fails!

我假设 Django 将其包装在默认数据库上的事务中,但不在辅助数据库上。这是一个已知问题吗?有解决办法吗?也许在 1.4 中?我的 Google-fu 失败了。

(如果我在设置中将 DATABASE_ROUTERS 更改为 [] 以便所有内容都进入同一个数据库,问题就会消失)

我将添加路由器的完整代码,以防有帮助:

SECONDARY_MODELS = ('WellOwner', ...)

import logging
logger = logging.getLogger(__name__)


class GmdbRouter(object):
    """Keep some models in a secondary database."""

    def db_for_read(self, model, **hints):
        if model._meta.app_label == 'gmdb':
            if model._meta.object_name in SECONDARY_MODELS:
                return 'secondary'

        return None

    def db_for_write(self, model, **hints):
        # Same criteria as for reading
        return self.db_for_read(model, **hints)

    def allow_syncdb(self, db, model):
        if db == 'secondary':
            if model._meta.app_label in ('sites', 'south'):
                # Hack for bug https://code.djangoproject.com/ticket/16353
                # When testing, create django_site and south in both databases
                return True

            return self.db_for_read(model) == 'secondary'
        else:
            # Some other db
            if model._meta.app_label == 'gmdb':
                # Our models go in the other db if they don't go into secondary
                return self.db_for_read(model) != 'secondary'

            # Some other model in some other db, no opinion
            return None

尝试这个:

class MyTestCase(TestCase):
    multi_db = True

https://docs.djangoproject.com/en/1.2/topics/testing/#django.test.TestCase.multi_db

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Django TestCase 不使用辅助数据库上的事务 的相关文章

  • Keras model.summary() 结果 - 了解参数数量

    我有一个简单的神经网络模型 用于使用 Keras Theano 后端 从用 python 编写的 28x28px 图像中检测手写数字 model0 Sequential number of epochs to train for nb ep
  • 使用 glGetFloatv 检索 pyglet 中的模型视图矩阵

    我正在使用 pyglet 在 python 中进行 3D 可视化 并且需要检索模型视图和投影矩阵来进行一些选择 我使用以下方式定义我的窗口 from pyglet gl import from pyglet window import wi
  • 在 Python 中同时插入行

    我正在尝试对我的代码进行矢量化 但遇到了障碍 我有 nxd x 值数组 x1 xn 其中每一行 x1 有很多点 x11 x1d nxd y 值数组 y1 y2 y3 其中每一行 y1 有很多点 y11 y1d x 值的 nx1 数组 x 1
  • 如何将人物传奇带到前台?

    我有一系列子图 其中每个子图都有一个图例 我想在每个子图之外与相邻子图重叠 问题在于图例位于其自己的图的 顶部 但位于相邻图的下方 Legend 不将 zorder 作为参数 所以我不知道如何解决这个问题 这是我使用过的代码 import
  • 如何在 Python 2.4 CSV 阅读器中禁用引用?

    我正在编写一个 Python 实用程序 需要解析一个我无法控制的大型且定期更新的 CSV 文件 该实用程序必须在仅提供 Python 2 4 的服务器上运行 CSV 文件根本不引用字段值 但Python 2 4版本的csv库 http ww
  • 如何在python 2.7.8中将非英文字母的字典写入文件?

    这是一个简单的例子 test location 北京 country 中国 the values are Chinese 在文件 test log 中 location 北京 country 中国 在python 2 7 8中 当我需要输出
  • 如何将 UPX 与 pyinstaller 一起使用?

    如何将 UPX 与 pyinstaller 一起使用 我正在关注文档 我已经下载了UPX 我的文件如下所示 import csv import selenium import pandas print Hello 然后我运行 pyinsta
  • python中嵌套字典值的总和

    我有一本这样的字典 data 11L a 2 b 1 a 2 b 3 22L a 3 b 2 a 2 b 5 a 4 b 2 a 1 b 5 a 1 b 0 33L a 1 b 2 a 3 b 5 a 5 b 2 a 1 b 3 a 1 b
  • 使用 Python 将阿拉伯语或任何从右到左书写系统的字符串打印到 Linux 终端

    非常简单的例子是 city print city 我期望输出是 但实际上输出是相反的字符串 字母看起来有点不同 因为它们有开始 中间和结束形式 我无法将其粘贴到此处 因为复制粘贴会再次更正字符串的顺序 如何在 Linux 终端上正确打印阿拉
  • Tensorflow 训练期间 GPU 使用率非常低

    我正在尝试为 10 类图像分类任务训练一个简单的多层感知器 这是 Udacity 深度学习课程作业的一部分 更准确地说 任务是对各种字体呈现的字母进行分类 数据集称为 notMNIST 我最终得到的代码看起来相当简单 但无论如何我在训练期间
  • Python 中嵌套列表的排序和分组

    我有以下数据结构 列表的列表 4 21 1 14 2008 10 24 15 42 58 3 22 4 2somename 2008 10 24 15 22 03 5 21 3 19 2008 10 24 15 45 45 6 21 1 1
  • 使用 argparse 指定默认文件名,但不使用 --help 打开它们?

    假设我有一个对文件执行一些操作的脚本 它在命令行上获取此文件的名称 但如果未提供 则默认为已知文件名 content txt 说 与蟒蛇的argparse 我使用以下内容 parser argparse ArgumentParser des
  • 如何从 Python 3.5 降级到 3.4

    我想安装 kivy 链接在这里 https kivy org docs installation installation windows html install win dist 用于项目 但是 当尝试使用 pip 安装它所依赖的包时
  • 如何使直方图列的宽度都相同

    我在操作直方图时遇到了一些麻烦 我有一个包含两列的 df 我将它们绘制为堆叠直方图 我将它们放入特定的垃圾箱中 请参阅下面的代码 但我想在最后制作一个大垃圾箱 4000 10000 但是 默认情况下 大垃圾箱的列宽很大 有没有办法让这个大垃
  • 进行异步调用时,“yield”在龙卷风中如何工作?

    最近我在学习龙卷风简介 我遇到了以下代码 class IndexHandler tornado web RequestHandler tornado web asynchronous tornado gen engine def get s
  • django ajax post 403被禁止

    使用 django 1 4 当我尝试从我的 javascript 做我的 django 服务器上的帖子时 我收到 403 错误 我的 get 工作正常 尽管问题仅出在帖子上 也尝试过 csrf exempt但没有运气 更新 我现在可以发布我
  • 收到“/:未找到事件。”使用 PyCharm 远程调试器时

    当我使用 PyCharm 通过 ssh 进行远程调试时tcsh shell 服务器 很多时候它停止工作 并显示 未找到事件 更具体地说 我在 pycharm 调试控制台中遇到以下内容 ssh username hostserver 22 p
  • python 相当于 sed

    有没有一种方法 无需双循环即可完成以下 sed 命令的操作 Input Time Banana spinach turkey sed i Banana s Toothpaste file Output Time BananaToothpas
  • 混合两个列表的Pythonic方法[重复]

    这个问题在这里已经有答案了 我有两个长度为 n 和 n 1 的列表 a 1 a 2 a n b 1 b 2 b n 1 我想要一个函数作为结果给出一个列表 其中包含两个中的替代元素 即 b 1 a 1 b n a n b n 1 以下方法有
  • 将同一 numpy 数组的两个视图组合成单个视图而不复制数组?

    我有一个大型 2d numpy 数组 我想删除它的子集并处理函数剩下的内容 我需要对许多子集执行此操作 因此理想情况下我不想每次都创建数组的副本 该函数不会更改数组中的任何值 mat np load filename mat 1 mat i

随机推荐

  • Newtonsoft JSON 序列化 byte[] 属性 [重复]

    这个问题在这里已经有答案了 public class MyClass public byte Bytes get set MyClass obj new MyClass obj Bytes new byte 1 22 44 55 strin
  • HTML5 音频 - currentTime 属性不准确?

    我正在研究一下 HTML5
  • 逐行测试多个(并非所有)列是否相等

    我想按行检查多列是否全部相等 我想出了一种复杂的方法来计算每组每个值的出现次数 但这似乎有些 麻烦 样本数据 sample df lt data frame id letters 1 6 group rep c r l 3 stringsA
  • 比较两个音频文件[重复]

    这个问题在这里已经有答案了 基本上 我有很多代表同一首歌的音频文件 然而 有些歌曲的质量比原曲差 有些经过编辑 与原曲不再相符 我想做的是以编程方式将这些音频文件与原始音频文件进行比较 看看哪些音频文件与该歌曲匹配 无论质量如何 直接比较显
  • 加载 MySQLdb 模块时出错“您安装了 mysqlclient 还是 MySQL-python?”

    我正在使用 Windows 10 命令行使用 python34 进行 django 项目 但是 我在 SQL 方面遇到了困难 我已经使用安装了 mysqlclientpip install mysqlclient 1 3 5并找到了该文件以
  • 检查 Python 字典列表中是否已存在值?

    我有一个 Python 字典列表 如下所示 a main color red second color blue main color yellow second color green main color yellow second c
  • 没有名为“tensorflow.keras.layers.experimental.preprocessing”的模块

    代码下面 import numpy as np np random seed 0 from sklearn import datasets import matplotlib pyplot as plt matplotlib inline
  • 位域,为什么要特定于实现?

    C C 位域似乎在硬件驱动程序和二进制网络传输中有很多应用 然而 它们似乎没有被广泛使用 并且通常不被鼓励 因为实际的二进制布局是特定于实现的 如 C99 标准 6 7 2 1 10 结构和联合说明符 中的引用所示 实现可以分配足够大的任何
  • removefromsuperview是否释放scrollview的对象?

    for UIView subview in scrollView subviews NSLog subviews Count d scrollView subviews count subview release subview remov
  • 如何让图标出现在新窗口中?

    我正在打开一个新窗口 向其中注入正文和头部的 HTML 问题出在标题部分 HTML 包含标题和图标 但图标不显示 这是代码和 jsFiddle https jsfiddle net ufnjspgc function Start TheBu
  • 如何告诉 LLDB 将信号传递给程序

    我在 lldb 中为安装在 MacOS 上的基于 C 语言的应用程序设置了很多断点 断点大多设置在应用程序的同一函数中 然而 第二天我回到应用程序继续处理它 并开始在同一个函数中再次设置断点 出现了一个问题 断点不是发生在应用程序函数内部
  • React Native:如何在 Android 和 iOS 中打开操作系统设置?

    我正在开发一个mobile应用程序使用反应本机我想在其中打开移动设备的settings当用户clicks在特定按钮上 我已经经历了docsRN 但仍然找不到任何可以帮助我实现同样目标的东西 有人可以吗guide我也一样 请问如何实施 谢谢
  • java 当鼠标点击时画一个圆

    我正在编写一个程序 当单击鼠标时 将绘制一个圆圈 以下是我到目前为止编写的代码 import java awt import javax swing import java awt event ActionEvent import java
  • 多模块项目中的 Maven 测试依赖关系

    我使用 Maven 构建一个多模块项目 我的模块 2 依赖于编译范围内的模块 1 src 以及测试范围内的模块 1 测试 模块 2
  • android studio logcat 删除日期、进程信息

    最近一次 Android Studio 更新后 目前我运行的是 3 1 2 logcat 开始间歇性地删除时间戳和 PID 信息 05 01 13 26 03 962 12909 12909 com perinote perinote D
  • 为什么“summarize”会删除一个组?

    我在胡闹babynames pkg A group by命令有效 但之后summarize 其中一个组将从组列表中删除 library babynames babynames 1 10000 gt group by year name gt
  • D3.js线性回归

    我搜索了一些有关构建线性回归的帮助 并在这里找到了一些示例 非线性回归函数还有一些应该涵盖这一点的 js 库 但不幸的是我无法使它们正常工作 简单统计 js和这个 回归 js With regression js我能够得到m and b线的
  • Android:注册意图过滤器以使用我的应用程序打开电子邮件附件

    我有一个可以生成自定义文件类型 sor 的应用程序 在应用程序内部 我有一个功能可以发送附有这些文件之一的电子邮件 我还有一个意图过滤器 允许应用程序显示在可以打开此类文件的应用程序列表中 这使我 有时 可以直接从手机上的用户电子邮件客户端
  • 强类型数据集与弱类型数据集

    Net 中的强类型数据集是什么意思 有人可以用一个清晰 而简短的例子来解释吗 另外 强类型数据集和弱类型数据集之间有什么区别 强类型数据集基于 Db Schema 生成 它们由从 DataSet DataTable 和 DataRow 派生
  • Django TestCase 不使用辅助数据库上的事务

    我正在使用 Django 1 3 1 我有两个数据库 我的一些模型位于一个数据库中 一些模型位于另一个数据库中 这两个数据库都是 contrib gis db backends postgis 数据库 令我惊讶的是 Django 的 Tes