Как получить данные из базы данных, используя сырой SQL, а не Django ORM - PullRequest
0 голосов
/ 14 октября 2019

У меня есть проект django, который подключен к базе данных сервера SQL, и когда я пытался нажать кнопку, чтобы получить данные из базы данных, произошел сбой системы.

Я пытаюсь преобразовать приведенный ниже синтаксис в ORM в rawsql:

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 %}

Ответы [ 2 ]

0 голосов
/ 14 октября 2019

Вы получаете эту ошибку, потому что в вашем urls.py вы объявили путь как:

"events/<int:id>/"

Ваш параметр URL называется id , и это то, что ваш взгляд будетполучить в качестве аргумента, а не pid .

Также я заметил, что ваша команда SQL может быть неправильной, вы не добавляете фактическое значение pid в строку. Я думаю, вы хотите, чтобы это было так:

"Select Person_.ID FROM Person_ WHERE ID = {0}".format(id). 
0 голосов
/ 14 октября 2019

Это не относится к БД, в ваших URL вы определили path("events/<int:id>/",getEvents,name = "getEvents"),, здесь имя аргумента id.

Вам необходимо предоставить одноименный аргумент в аргументах вашей функции. Измените это

def getEvents(request,pid):

на

def getEvents(request,id):
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...