Python 在Django中,如何执行自定义sql?

Python 在Django中,如何执行自定义sql?,python,sql,django,Python,Sql,Django,django管理命令之一是“sql\u custom”,它打印为指定应用程序定义的所有自定义sql。我想从django内部执行它,而不是打印它。是否有其他命令允许我这样做?让我补充一句,“syncdb”不是一个答案,因为它可以做很多其他(我不想要的)事情。这就是你的意思吗 在django.core.management.sql中,存在一个函数sql\u custom,该函数“返回自定义表列表,修改给定应用程序的sql语句。” 否。我不想执行原始查询。我想让django执行model.backe

django管理命令之一是“sql\u custom”,它打印为指定应用程序定义的所有自定义sql。我想从django内部执行它,而不是打印它。是否有其他命令允许我这样做?让我补充一句,“syncdb”不是一个答案,因为它可以做很多其他(我不想要的)事情。

这就是你的意思吗


django.core.management.sql
中,存在一个函数
sql\u custom
,该函数“返回自定义表列表,修改给定应用程序的sql语句。”


否。我不想执行原始查询。我想让django执行model.backend.sql中的自定义sql—所有这些都作为django命令一次执行。我不认为您可以通过django来执行。你可以直接复制它并在你的数据库上运行,也可以通过管道将输出传输到数据库引擎的命令行工具。但是如果django可以帮我的话,我不想让它通过管道运行。它引入了不必要的麻烦-也许我甚至不知道和关心我使用的是什么后端引擎。所以我不知道该使用哪个命令工具。甚至可能这样的工具也没有安装或可用。为什么要在django中执行它?这个sqlcustom是用来设置数据库的。仅仅按照jqproffitt的建议运行命令是不够的(当您部署项目时)?因为如果我从django开始运行,django将关注引擎之间的差异,即它将为正确的后端选择正确的自定义sql文件,通过正确的连接执行它,所以我不需要在意。不,这不是我的意思。我不认为在初始syncdb运行后有一个固定的解决方案来运行自定义sql。似乎您需要执行一些操作,例如检索SQL并手动执行它(可能将其包装在自定义管理命令中)。不,我要做的是定义从SQL_自定义派生的自定义命令。我所需要的只是覆盖handle\u app方法。但是我想知道我是否在重新发明轮子。
sql\u custom
的参数是什么?@cold\u coder:app、style、connection。但我认为这是过时的旧代码。您可以查看一下文件
django/core/management/sql.py
,然后自己看一看好的,我来看看。非常感谢。
>>> for p in Person.objects.raw('SELECT * FROM myapp_person'):
...     print(p)
John Smith
Jane Jones
from django.core.management.sql import sql_custom
from django.db import connection

# List of the custom table modifying SQL statements for all apps.
l = sql_custom('', None, connection)
sql = " ".join(l)

cursor = connection.cursor()
cursor.execute(sql)