Как передать динамическую переменную в сыром SQL-запрос, используя Django MySQL - PullRequest
0 голосов
/ 04 сентября 2018

Как архивировать следующее ...

Мне нужно передать две переменные даты в длинном формате и применить эту переменную в подзапросе с использованием raw sql django

def duplicatephoneno(request):

    cursor = connection.cursor()
    payload = json.loads(request.body.decode('utf-8'))
    print(payload)
    if payload:
        startdate=payload['from']
        enddate=payload['to']
        with connection.cursor() as cursor:
            cursor.execute(MYSQLdb.escape_string("SELECT * FROM `allergy` WHERE `allergy`.`patient_n_key` IN (SELECT `patient_masters`.`patient_n_key` FROM `patient_masters` WHERE `patient_masters`.`created_on`between %s AND %s)",[startdate], [enddate]))
            row = dictfetchall(cursor)
            patientuser=serializers.serialize('json', row)
        return HttpResponse(patientuser, content_type='application/json;charset=utf8')

1 Ответ

0 голосов
/ 04 сентября 2018

В документации указано, как это сделать. Обратите внимание, что вы не сможете использовать этот метод, если вы используете базу данных SQLite.

Как примечание, использование необработанных запросов должно быть вашим последним средством. ORM Django довольно хорош в наши дни, и вам действительно следует использовать необработанные запросы только в том случае, если есть тип запроса, который не поддерживается ORM (редко) или строка запроса, сгенерированная ORM, имеет значительную производительность по сравнению с вашим пользовательским необработанным запросом. Наборы запросов (объекты, возвращаемые запросами ORM) также довольно легко превратить в JSON, как вы, похоже, делаете здесь.

...