【问题标题】:Is there a way to use the queries developed within Python in django有没有办法在 django 中使用 Python 中开发的查询
【发布时间】:2020-10-14 09:44:56
【问题描述】:

我使用 python 开发了许多 SQLite 查询(请参见下面的示例),我想通过 Django 网页发布查询结果。

我已经安装了 Django 并创建了链接到 SQLITEDB 的 ORM。

我的问题:有没有办法直接从 Django 调用这些查询(用 Python 创建)或它们的结果?还是我必须将这些查询重新编码为“Django”语言?

我已经开始在 views.py 和 HTML 页面下用兼容的“Django 语言”记录这些查询。恐怕我在重新编码时会浪费时间。欢迎任何可以提供帮助的建议或意见。

Python 中的查询示例:

cursor.execute(""" SELECT  "AgentName", count (*) FROM "CSQ Agent Report" WHERE  "AgentName" != "None"  
AND "OriginatorDNHANDELED" = '1' or "OriginatorDNNOTHANDELED" = '1' Group by "AgentName"  """)

liste8 = cursor.fetchall()

for i in range (len(liste8)):
    
    print (liste8[i][0],liste8[i][1])

下面是我开始在 Django 视图中编码的内容和 Django 视图中的 HTML 页面

def home(request):
    
queryset = CsqAgentReport.objects.values('agentname').filter(csqnames__exact = 
'CSQ_HDF*').filter(contactdisposition__contains='2').annotate(total=Count('nodeid_sessionid_sequenceno',distinct=True)).order_by('csqnames')


context = {
        'object_list' : queryset,
           }

在 html 文件中:

{% block content %} 

<h1> Stats Call Center </h1>
<p> Total calls  -- object_list</p>
<ul>
  {% for var_nbr_app_repond in object_list %}
      <li> {{var_nbr_app_repond.total}} appel(s)- {{var_nbr_app_repond.csqnames}}- 
      {{var_nbr_app_repond.agentname }}-{{var_nbr_app_repond.talktime }}</li>
  {% endfor %}
</ul>

【问题讨论】:

  • docs.djangoproject.com/en/3.1/topics/db/sql/… 如果你使用它,你真的应该知道你在 sql 中做什么。如果您向公众开放您的服务器并且您的声明没有正确转义,您可能会遇到大问题。
  • 这些查询仅供内部使用。不适用于公共网站,仅适用于有限群体的 N 内网。

标签: python django


【解决方案1】:

如果只是在 Django 中执行 SQL,那就去做吧 :-)

https://docs.djangoproject.com/en/3.1/topics/db/sql/#executing-custom-sql-directly

【讨论】:

  • 不仅是执行 SQL,还包括将数据渲染成 web 格式。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-12-11
  • 2021-01-01
  • 1970-01-01
  • 2018-06-02
  • 1970-01-01
相关资源
最近更新 更多