Как выполнить необработанный sql-запрос для SQL-сервера из django?
Оригинальный запрос к базе данных, который работает:
SELECT *
FROM [db_name].[dbo].[table]
WHERE name IN (
SELECT name
FROM [db_name].[dbo].[table]
WHERE active = 1
Group by name
Having count(*) > 1
)
order by name
и когда я пытаюсь выполнить его из django как
from django.db import connection
def fetch_matching_pn_products():
with connection.cursor() as cursor:
cursor.execute("SELECT *"
"FROM db_name.dbo.table"
"WHERE name IN ("
"SELECT name"
"FROM db_name.dbo.table"
"WHERE active = 1"
"Group by name"
"Having count(*) > 1"
")"
"order by name")
data = cursor.fetchall()
return data
возвращает эту ошибку
django.db.utils.ProgrammingError: ('42000', "[42000] [Microsoft][ODBC Driver 17 for SQL Server][SQL Server]Incorrect syntax near the keyword 'IN'. (156) (SQLExecDirectW); [42000] [Microsoft][ODBC Driver 17 for SQL Server][SQL Server]Incorrect syntax near '.'. (102)")
Я также пробовал изменить db_name.dbo.table
в django на [db_name].[dbo].[table]
и table
без успеха.
Что нужно изменить, чтобы необработанный запрос выполнялся правильно?
Добавьте пробел после каждого "
.
Без пробела строка содержит SELECT nameFROM
и т.д., что неверно, поскольку FROM должно быть отдельным словом.