Non utilizzare fetchall()
(che restituisce una lista, che non è mai 'maggiore di 0'), usa 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()
restituisce None
se non c'è nulla da recuperare e il test su is not None
ti dà un pratico valore booleano da restituire direttamente.