Назначение зарезервированного слова sql в качестве переменной в sql-запросе

Я хотел бы узнать, как поместить зарезервированное слово sql в качестве переменной в sql-запрос

def requeteDB(sql_request):
    with connection.cursor() as cursor:
        cursor.execute(*sql_request)
        row = cursor.fetchall()
    return row

def query1(choice, limit):
    return('''
           SELECT col1, SUM(col2) as nb as
           ORDER BY nb %s
           LIMIT %s
           ''', [choice, limit])

requeteDB(query1(choice="DESC", limit="5"))
> *** django.db.utils.ProgrammingError: ERROR: Type 'nb' does not exist
LINE 10: ORDER BY nb 'DESC'
------------------^

Вероятно, причина неудачи кроется во втором AS, поэтому вы можете исправить это с помощью:

def query1(choice, limit):
    return (
        '''
           SELECT col1, SUM(col2) as nb
           ORDER BY nb %s
           LIMIT %s
           ''',
        [choice, limit],
    )

В случае, если вы до используете зарезервированное ключевое слово, вы можете описать имя переменной. Для это делается с помощью двойных кавычек, так:

def query1(choice, limit):
    return (
        '''
           SELECT col1, SUM(col2) as "nb"
           ORDER BY "nb" %s
           LIMIT %s
           ''',
        [choice, limit],
    )
Вернуться на верх