如何使用django mysql在原始sql查询中传递动态变量

问题描述 投票:0回答:1

如何归档以下内容......

我需要传递两个变量日期作为长格式并使用原始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')
mysql django python-3.x django-rest-framework
1个回答
0
投票

The docs mention how to do this.注意如果您使用的是SQLite数据库,则无法使用此方法。

作为旁注,使用原始查询应该是您的最后手段。 Django ORM现在相当不错,如果存在ORM不支持的查询类型(罕见),或者ORM生成的查询字符串与自定义原始查询相比具有显着的性能成本,那么您应该只使用原始查询。查询集(ORM查询返回的对象)也很容易变成JSON,就像你在这里做的那样。

© www.soinside.com 2019 - 2024. All rights reserved.