【问题标题】:how to retrieve data from database using raw SQL not django ORM如何使用原始 SQL 而不是 django ORM 从数据库中检索数据
【发布时间】:2020-02-10 17:52:41
【问题描述】:

我有一个连接到 SQL 服务器数据库的 django 项目,当我尝试单击按钮从数据库中检索数据时,系统崩溃了。

我正在尝试将 ORM 中的以下语法转换为原始 sql:

dbEntry = Person_.objects.get(pk =pk) 

注意:我没有使用 ORM

一旦我尝试执行任务,系统崩溃并显示:

getEvents() 得到了意外的关键字参数“id”

urls.py

path("events/<int:id>/",getEvents,name = "getEvents"),

views.py

def getEvents(request,pid):
  q1 = cuesor.execute("Select Person_.ID FROM Person_ WHERE ID = pid")
  print("q1=",q1)
  qresult = q1.fetchone()
  print("qresult",qresult)
  return render(request,"connect.html",{"qresult":qresult})

list.html

<form method = "GET" action = "{% url 'getEvents' obj.0 %}"# obj is the iterator --- 0 is the first field in the table == ID
   <button class = "btn btn-primary">get details</button>
</form>

display.html

{% for row in qresult %}
  <p> {{ row.0 }} </p>
{% endfor %}

【问题讨论】:

    标签: django database django-templates


    【解决方案1】:

    您收到该错误是因为在您的 urls.py 中,您已将路径声明为:

    "events/<int:id>/"
    

    您的 url 参数名为 id,这是您的视图将接收的参数,而不是 pid

    我还注意到您的 SQL 命令可能是错误的,您没有将 pid 的实际值添加到字符串中。 我想你希望它是这样的:

    "Select Person_.ID FROM Person_ WHERE ID = {0}".format(id). 
    

    【讨论】:

      【解决方案2】:

      这与数据库无关,在您的网址中,您已定义 path("events/&lt;int:id&gt;/",getEvents,name = "getEvents"),,这里的参数名称是id

      您需要为函数参数中的参数提供相同的名称。改变这个

      def getEvents(request,pid):
      

      def getEvents(request,id):
      

      【讨论】:

        猜你喜欢
        • 2018-02-17
        • 1970-01-01
        • 1970-01-01
        • 2016-03-17
        • 2015-05-18
        • 1970-01-01
        • 2018-04-22
        • 1970-01-01
        • 2015-01-20
        相关资源
        最近更新 更多