使用Django-extensions插件在Jupyter笔记本中打印SQL查询

3

是否可能像这个命令一样显示SQL查询:python manage.py shell_plus --print-sql,但在Jupyter Notebook中呢?

我尝试了这个命令:python manage.py shell_plus --notebook --print-sql,但它没有起作用。

1个回答

1
这可能是Django扩展中的一个错误,导致您无法看到SQL查询。几个版本之前,有人在这里问如何在Jupyter中禁用SQL打印。
作为解决方法,您可以使用django_print_sql
from django_print_sql import print_sql
with print_sql(count_only=False):
    User.objects.count()

你甚至可能会发现,控制要打印哪些查询比打印全部查询更可取。
但我大多数时候只是事后打印最后一个查询:
from django import db
db.connection.queries[-1]

如果您想使用sqlparse对查询进行漂亮的打印,那么编写一个实用程序函数就足够复杂了:

import sqlparse
sqlparse.format(
    db.connection.queries[-1]['sql'], 
    reindent=True, 
    keyword_case='upper'
)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接