Language/Python
[Django] select, where 쿼리 각각 생성
도토리즈
2023. 6. 12. 23:40
- request sample
{
"name" : "Lemon",
"num" : 2,
"partition" : {
"value_info" : "Yellow"
}
}
from django.shortcuts import render
from rest_framework.decorators import api_view
from rest_framework.response import Response
from django.db import connections
# Create your views here.
@api_view(['POST'])
def test(request):
table_name = request.data.get('name',None)
data_num = request.data.get('num',None)
partition_value = request.data.get('partition',None)
field_list = get_field_list(table_name,data_num)
where_condition = get_where_condition(partition_value)
print(where_condition)
query = ""
if field_list is not None or where_condition is not None :
query += field_list + " "
query += where_condition
return Response({"select_query" : field_list,
"where_query" : where_condition,
"total_query" : query})
def get_field_list(table_name,data_num) :
conn = connections['default']
if data_num == 1 :
query = f"SELECT value_info FROM test_table WHERE table_info = '{table_name}' and data_num = '1' "
elif data_num ==2 :
query = f"SELECT value_info FROM test_table WHERE table_info = '{table_name} ' "
cur = conn.cursor()
cur.execute(query)
result= cur.fetchall()
column_list = [row[0] for row in result]
all_column_list = ", ".join(column_list)
prepared_select_query = f"SELECT {all_column_list} FROM {table_name}"
return prepared_select_query
def get_where_condition(partition_value) :
where_query = "WHERE "
conditions = []
for key, value in partition_value.items():
condition = f"{key} = '{value}'"
conditions.append(condition)
where_query += " AND ".join(conditions)
return where_query