代码之家  ›  专栏  ›  技术社区  ›  AbstractProblemFactory

Django:查询与sqlite3一起工作正常,与其他数据库管理系统不一起工作

  •  0
  • AbstractProblemFactory  · 技术社区  · 16 年前

    我用“q()”查询了很长时间, Sqlite3 工作得很好,但是 postgresql mysql 我有一些奇怪的错误,比如PostgreSQL: invalid input syntax for integer: "(" 对于MySQL: Truncated incorrect DOUBLE value: '('

    如何使用MySQL运行该查询?我的错误在哪里?

    这是一个问题:

        watchersTuple = self.getWatchers()
        tagsTuple = self.getTags()
        blockedUserTuple = self.getBlockedUser()
        blockedTagTuple = self.getBlockedTag()
    
        statuses = Status.objects.filter( (Q(author__in = str(watchersTuple)) | Q(tags__in = str(tagsTuple)) | Q(author = self) | Q(recipient = self)) & ~Q(author__in = str(blockedUserTuple)) & ~Q(tags__in = str(blockedTagTuple)) ).distinct()
    
    2 回复  |  直到 16 年前
        1
  •  1
  •   Daniel Roseman    16 年前

    你还没有发布你的模型,但看起来 author 是一个整型字段,或者可能是一个外键。在这种情况下,你为什么要用 str 关于值的元组?您可能想检查author是否是这些值中的一个。所以只需移除 战略研究 打电话。

    它在sqlite中工作的原因是sqlite忽略字段类型-字符串和整数的处理方式相同。其他DBMS更严格。

        2
  •  1
  •   Martin    16 年前

    在查询中没有明显的内容。比较sqlite3和mysql的原始查询会很有用。这个 link 演示如何在上切换SQL查询调试。

    推荐文章