No use fetchall()
(que devuelve una lista, que nunca es 'mayor que 0'), use fetchone()
:
def track_exists(self, track_id):
cur = self.conn.cursor()
cur.execute("SELECT fma_track_id FROM tracks WHERE fma_track_id = %s", (track_id,))
return cur.fetchone() is not None
fetchone()
devuelve None
si no hay nada que obtener y la prueba contra is not None
le da un valor booleano útil para devolver directamente.