【问题标题】:How to execute raw sql statement for SQL server from django?如何从 django 为 SQL Server 执行原始 sql 语句?
【发布时间】:2021-12-05 10:39:05
【问题描述】:

有效的原始数据库查询:

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)")

我还尝试将 django 中的 db_name.dbo.table 更改为 [db_name].[dbo].[table]table,但没有成功。 需要更改哪些内容才能正确执行原始查询?

【问题讨论】:

    标签: python django django-database django-mssql


    【解决方案1】:

    在每个" 之后添加一个空格。

    没有空格的字符串包含SELECT nameFROM等,这是不正确的,因为FROM应该是一个单独的单词。

    【讨论】:

      猜你喜欢
      • 2014-12-18
      • 1970-01-01
      • 2018-01-16
      • 2010-09-08
      • 1970-01-01
      • 2015-10-20
      • 2017-01-03
      • 2014-10-25
      • 2011-04-15
      相关资源
      最近更新 更多