【问题标题】:Django raw sql doesn't work if the query includes a SET如果查询包含 SET,则 Django 原始 sql 不起作用
【发布时间】:2015-09-23 09:24:56
【问题描述】:

如标题所示,如果我尝试从 django 进行原始 sql 查询并包含以下内容:

SET @rank = 0;

下面是一个不带 SET 的查询示例:

SELECT * FROM table;

那么查询会失败,django会返回一个空元组 PS:我确定是因为它,因为我用上面的 SET 运行了一个简单的 SELECT,没有它,没有它,它完美地工作。

谁能帮帮我?我真的需要能够使用设置。 (我用mysql做数据库)

【问题讨论】:

  • 或许你应该使用SET @rank := 0;。请参阅this 答案。
  • 也试过了,结果一样
  • 您可以发布您的查询代码吗?
  • 修改了问题以包含查询,正如我所说,如果在通过 django 原始查询发送时使用 Set,即使是最基本的查询也会失败(另请注意,如果从 mysql workbench 使用该查询与 set 一起使用所以这显然是一个 django 问题)
  • this

标签: mysql sql django


【解决方案1】:

我有 doru 说的解决方案:
“尝试一次执行一个查询:SET @rank := 0; 先是 SELECT * FROM table; – doru” 显然 django 停在“;”之后不执行任何操作。我发布了这个,所以我可以将它标记为已回答。谢谢多鲁

【讨论】:

    【解决方案2】:

    你需要这样做:

    cursor = connection.cursor()
    
    cursor.execute("SET @rank:=0;")
    cursor.execute("SELECT * FROM table;")
    rows = cursor.fetchall()
    

    【讨论】:

      猜你喜欢
      • 2013-11-15
      • 1970-01-01
      • 2015-11-21
      • 2012-03-16
      • 2014-01-21
      • 2020-05-09
      • 2012-12-13
      • 2018-05-15
      • 1970-01-01
      相关资源
      最近更新 更多