有没有办法将断点附加到 Django South 迁移?

问题描述 投票:0回答:3

我在数据迁移方面遇到问题,真的希望我可以在问题点上放置一个断点并检查对象。有没有办法通过 PyCharm 来完成这个?

如果没有,有没有其他方法可以做到这一点?

如果没有,调试南迁移的最佳方法是什么?

django django-south pycharm
3个回答
9
投票

是的,您可以在 PyCharm 中做到这一点。你需要create Django server run configuration.

使用您的南迁移命令指定自定义运行命令,然后只需按下调试按钮(在您希望调试器停止的地方放置断点之前)。


0
投票

正如 Dmitry 提到的,可以在 PyCharm 中运行迁移命令并对其进行调试。 命令是

python manage.py migrate <name of your Django app> <name of the migration>
,例如
python manage.py migrate projects 0007_auto_20220407_1105.py
.

在许多情况下,您甚至不需要断点,只需确保将调试器配置为在出现异常时中断即可。 这是它在 VS Code 中的样子(很抱歉这次没有使用 PyCharm,我交替使用它们):

您可以在

sql
变量中看到错误的 SQL,您可以在调用堆栈树中向上移动到
apply
函数并查看是哪个
operation
导致了这个问题:


0
投票

TL;博士;调试任何具有数据库访问权限的测试。适用于任何迁移,而不仅仅是 Django South。

长答案:

有没有想过为什么在运行测试时,您会看到以下消息?

Creating test database for alias 'default'

pytest
的情况下,这是允许数据库访问的以下行的结果:

import pytest

@pytest.mark.django_db # <-- This line
def test_my_user():
    me = User.objects.get(username='me')
    assert me.is_superuser

Pytest 然后会给你一个超级新的数据库,其中包含该测试的所有表。它通过在一个全新的一次性数据库上运行所有迁移来做到这一点。

默认实现通过应用迁移创建测试数据库,并在测试运行后删除数据库。

(取自

pytest-django
文档

一种方式,更简单(如果你已经具备调试测试的能力)

  • 在迁移中放置断点
  • 调试任何测试
  • 并且因为 Django 运行 所有迁移都在一个新的空独立数据库 上,所以您可以自动调试迁移。

根据我的研究,这也适用于

unittest
.

© www.soinside.com 2019 - 2024. All rights reserved.