将postgres查询转换为django查询

时间:2016-06-21 16:24:24

标签: python django postgresql sqlite

我需要一些关于此查询的帮助。

SELECT  s.nombre as 'habilidad',
        GROUP_CONCAT( a.carrera_id )
FROM    perfiles_alumno a,
        perfiles_alumno_habilidades h,
        perfiles_universidad u,
        segmentacion_habilidad s
WHERE   u.user_id = %s
AND     a.universidad_id = u.id
AND     a.id = h.alumno_id
AND     s.id = h.habilidad_id
GROUP BY h.habilidad_id
ORDER BY a.carrera_id

我需要在Django中执行此查询。我可以在我在SQLite3中运行的本地环境中使用它,但是当我推向生产时它失败了,因为我有Postgres。

有谁可以帮助我?

1 个答案:

答案 0 :(得分:1)

要将此SQL转换为Postgres,请将group_concat更改为string_agg(s.carrera_id, ',')。但随后它又不再适用于SQLite。如果在开发和生产中使用相同的数据库,则可能会遭受更少的损失。

如果您想了解每个小组的GROUP BY h.habilidad_id, s.nombre,我认为您需要s.nombre

此外,您应避免使用%s插入用户提供的值,因为这会带来安全风险。