Назначение зарезервированного слова 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],
)
В случае, если вы до используете зарезервированное ключевое слово, вы можете описать имя переменной. Для postgresql это делается с помощью двойных кавычек, так:
def query1(choice, limit):
return (
'''
SELECT col1, SUM(col2) as "nb"
ORDER BY "nb" %s
LIMIT %s
''',
[choice, limit],
)