'Dynamic raw query (select clause) Django

I'm trying to execute a raw query in Django where I dynamically want to pick column names. Eg

   def func(all=True){
   if all:
      query_parameters = {
           'col': '*'
      }
   else:
      query_parameters = {
           'col': 'a,b,c'
      }
    with connections["redshift"].cursor() as cursor:
        cursor.execute(
            "select %(col)s from table limit 2 ;",
            query_parameters,
        )
        val = dictfetchall(cursor)
        return val
    }

Django is executing it like.

select "*" from table limit 2;

so the output is just like select "*"

*

and in the else case it is executed like

select "a,b,c" from table limit 2;

so the output is a,b,c

How can I run the command so that Django run it like

select a , b , c from table limit 2

so that the output is

a b c 
1 2 3 
4 5 6 


Solution 1:[1]

I found a hack myself. See Here

Explanation

Prepared query step by step

Input data (Columns I need)

self.export_col = “a,b,c”

def calc_col(self):
        if self.exp == 'T':
            select_col = ""
            self.export_col = self.export_col.split(',')
            for col in self.export_col:
                select_col += col + ","
            select_col = select_col[:-1]
            self.export_col = select_col
        else:
            self.export_col += '*'

def prepare_query(self):
        query += " SELECT "
        query += self.export_col
        query += """ from table limit 2;"""

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 Not yet decided