diff --git a/server/djrandom/fingerprint/dedup.py b/server/djrandom/fingerprint/dedup.py index daf8b89082e952555a04aa6cd8d573e1ea31c9de..585a16a3f4199229e0866d072f129a1b666e9cb5 100644 --- a/server/djrandom/fingerprint/dedup.py +++ b/server/djrandom/fingerprint/dedup.py @@ -64,15 +64,16 @@ class DeDuper(object): log.debug('loading in-memory fingerprint database...') start = time.time() fp.erase_database(local=True, really_delete=True) - mp3s = MP3.query.filter( - (MP3.artist == u'bonobo') - & (MP3.state == MP3.READY) - & (MP3.has_fingerprint == True)) - for mp3 in mp3s: - code = self._generate_code_json(mp3.echoprint_fp, mp3.sha1) + # Skip the ORM and directly query the SQL layer. + q = select([Fingerprint.sha1, Fingerprint.echoprint_fp], + (MP3.sha1 == Fingerprint.sha1) + & (MP3.state == MP3.READY) + & (MP3.has_fingerprint == True)) + for row in engine.execute(q): + code = self._generate_code_json(row.echoprint_fp, row.sha1) if not code: continue - self.codes[mp3.sha1] = code['fp'] + self.codes[row.sha1] = code['fp'] fp.ingest(code, do_commit=False, local=True) elapsed = time.time() - start log.debug('loaded in-memory fingerprint database in %g seconds' % elapsed)