From a11a02429b7dab7f63edd6ca1fff290a44855232 Mon Sep 17 00:00:00 2001 From: Jonathan Perry-Houts Date: Tue, 15 May 2018 10:36:38 -0700 Subject: [PATCH] Avoid Pony/MySQL problem MySQL throws the following with bulk deletes. Non-bulk deletes don't generate complex SQL statements, so avoid the problem. pony.orm.dbapiprovider.OperationalError: (1093, "Table 'self' is specified twice, both as a target for 'DELETE' and as a separate source for data") --- supysonic/db.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/supysonic/db.py b/supysonic/db.py index a716069..762e625 100644 --- a/supysonic/db.py +++ b/supysonic/db.py @@ -107,7 +107,7 @@ class Folder(PathMixin, db.Entity): not exists(f for f in Folder if f.parent == self) and not self.root) total = 0 while True: - count = query.delete(bulk = True) + count = query.delete(bulk = False) total += count if not count: return total @@ -140,7 +140,7 @@ class Artist(db.Entity): @classmethod def prune(cls): return cls.select(lambda self: not exists(a for a in Album if a.artist == self) and \ - not exists(t for t in Track if t.artist == self)).delete(bulk = True) + not exists(t for t in Track if t.artist == self)).delete(bulk = False) class Album(db.Entity): _table_ = 'album' @@ -180,7 +180,7 @@ class Album(db.Entity): @classmethod def prune(cls): - return cls.select(lambda self: not exists(t for t in Track if t.album == self)).delete(bulk = True) + return cls.select(lambda self: not exists(t for t in Track if t.album == self)).delete(bulk = False) class Track(PathMixin, db.Entity): _table_ = 'track'