Как выполнить необработанный 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 должно быть отдельным словом.

Вернуться на верх