相关疑难解决方法(0)

如何查看Django正在运行的原始SQL查询?

有没有办法在执行查询时显示Django正在运行的SQL?

sql django

272
推荐指数
12
解决办法
15万
查看次数

在Django shell会话期间获取SQL查询计数

有没有办法在Django shell会话期间打印Django ORM执行的原始SQL查询的数量?

这种信息已经由Django调试工具栏提供(例如,5 QUERIES in 5.83MS但是如何从shell获取它并不明显.

python sql django shell

45
推荐指数
3
解决办法
2万
查看次数

如何在django的queryset中查询子查询?

我怎么能在django的查询集中有一个子查询?例如,如果我有:

select name, age from person, employee where person.id = employee.id and
employee.id in (select id from employee where employee.company = 'Private')
Run Code Online (Sandbox Code Playgroud)

这就是我所做的.

Person.objects.value('name', 'age')
Employee.objects.filter(company='Private')
Run Code Online (Sandbox Code Playgroud)

但它没有工作,因为它返回两个输出...

python django

28
推荐指数
4
解决办法
3万
查看次数

获取 Django 中 .exists() 查询生成的 SQL 语句

是否可以在 Django 中打印由 queryset.exists() 语句生成的 SQL?

django django-orm

8
推荐指数
1
解决办法
2062
查看次数

在Django rest框架中使用ModelSerializer的select_related queryset

我正在尝试将"select_related"查询集方法与DRF序列化程序一起使用,但此示例仍在执行大量SQL查询.

如何从select_related方法获取相关对象"model_b"?

class Model_A(models.Model):
    title = models.CharField(max_length=100)
    description = models.TextField()
    model_b = models.ForeignKey(Model_B, null=True, blank=True)

class Model_B(models.Model):
    title = models.CharField(max_length=100)


class Model_A_Serializer(serializers.ModelSerializer):
    model_b = Model_B_Serializer(source="model_b")
    class Meta:
        model = Model_A
        fields = ('title', 'model_b')

class Model_B_Serializer(serializers.ModelSerializer):
    class Meta:
        model = Model_B


class Model_A_View(viewsets.ModelViewSet):
    serializer_class = Model_A_Serializer
    queryset = Model_A.objects.select_related('model_b').all()
Run Code Online (Sandbox Code Playgroud)

django-rest-framework

6
推荐指数
1
解决办法
6288
查看次数

即使 DEBUG=False 也记录 SQL 查询

这是我的日志配置settings.py

LOGGING = {
    'version': 1,
    'disable_existing_loggers': False,
    'handlers': {
        'console': {
            'class': 'logging.StreamHandler',
        },
        'file': {
            'class': 'logging.FileHandler',
            'filename': os.path.join(BASE_DIR, 'logs', 'django.log'),
        },
    },
    'loggers': {
        'django': {
            'handlers': ['file', 'console'],
            'level': 'DEBUG',
        },
        'django.template': {
            'handlers': ['file', 'console'],
            'level': 'INFO',
        },
        'App': {
            'handlers': ['file', 'console'],
            'level': 'DEBUG',
        },
    },
}
Run Code Online (Sandbox Code Playgroud)

有一种我无法解释的行为:如果我运行,debug=True我可以看到所有 SQL 查询都记录到控制台,但是当debug=False这种情况没有发生时,即使我不更改上面的配置。

为什么是这样?如何在日志配置中确定 SQL 查询是否记录到控制台?

django logging python-logging

6
推荐指数
2
解决办法
3231
查看次数

Django - 记录每个视图的动作

我正在考虑为我的django Web应用程序创建一个日志系统.Web应用程序的使用非常全面(涵盖了业务流程的所有方面),因此我想跟踪发生的每个事件.具体来说,我想记录每个运行的视图而不仅仅是"主要"视图,并且可能记录视图中执行的内容.

当我处于测井系统的"想法"阶段时,我很快就遇到了一些问题,让我不确定如何继续.以下是我的主要问题:

  • 我正在考虑将主要Web应用程序保存其数据的同一MySQL数据库中的所有事件记录下来.我担心的是将MySQL数据库膨胀成一个庞大的数据库.此外,如果数据库崩溃或以某种方式被破坏(是的,我有备份)我也会丢失我的日志,这会消除任何追踪问题的能力.我是使用单独的数据库还是只使用文本文件?
  • 我有多精细?最初我只想记录"Date - In my myView"之类的东西.但是,正如我正在考虑的那样,记录视图中发生的所有内容会很好.这样做可能会使日志变得庞大!而且如果将很多日志输入行混合到代码中,也会使我的代码难看.这种细节:
    • 日期 - 输入视图myView
    • 日期 - 在视图中查看myView,从数据库中检索对象myObject
    • 日期 - 在视图myView中,将myObject字段myField设置为myNewValue
    • 日期 - 离开myView

这是我在这一点上的主要想法.关于这方面的任何建议?

谢谢

django logging django-views

2
推荐指数
1
解决办法
946
查看次数