首页 > 解决方案 > 如何使用 django mysql 在原始 sql 查询中传递动态变量

问题描述

如何归档以下...

我需要传递两个长格式的变量日期,并使用原始 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')

标签: mysqldjangopython-3.xdjango-rest-framework

解决方案


尝试这个

def duplicatephoneno(request):
    payload = json.loads(request.body.decode('utf-8'))
    print(payload)

    if payload:
        startdate=payload['from']
        enddate=payload['to']
        with connection.cursor() as cursor:

            queries="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)"
            data_tuple=(startdate,enddate)
            cursor.execute(queries,data_tuple)
            connection.commit()
            row = cursor.fetchall()
            patientuser=serializers.serialize('json', row)
            return HttpResponse(patientuser, content_type='application/json;charset=utf8')

推荐阅读