Open JoeGermuska opened 3 years ago
Possibly related: I can't delete that playlist either.
---------------------------------------------------------------------------
AssertionError Traceback (most recent call last)
<ipython-input-11-e14270c84dac> in <module>
1 session.delete(p)
----> 2 session.commit()
~/.virtualenvs/birdnest-QUrl1afS/lib/python3.8/site-packages/sqlalchemy/orm/session.py in commit(self)
1413 raise sa_exc.InvalidRequestError("No transaction is begun.")
1414
-> 1415 self._transaction.commit(_to_root=self.future)
1416
1417 def prepare(self):
~/.virtualenvs/birdnest-QUrl1afS/lib/python3.8/site-packages/sqlalchemy/orm/session.py in commit(self, _to_root)
827 self._assert_active(prepared_ok=True)
828 if self._state is not PREPARED:
--> 829 self._prepare_impl()
830
831 if self._parent is None or self.nested:
~/.virtualenvs/birdnest-QUrl1afS/lib/python3.8/site-packages/sqlalchemy/orm/session.py in _prepare_impl(self)
806 if self.session._is_clean():
807 break
--> 808 self.session.flush()
809 else:
810 raise exc.FlushError(
~/.virtualenvs/birdnest-QUrl1afS/lib/python3.8/site-packages/sqlalchemy/orm/session.py in flush(self, objects)
3231 try:
3232 self._flushing = True
-> 3233 self._flush(objects)
3234 finally:
3235 self._flushing = False
~/.virtualenvs/birdnest-QUrl1afS/lib/python3.8/site-packages/sqlalchemy/orm/session.py in _flush(self, objects)
3371 except:
3372 with util.safe_reraise():
-> 3373 transaction.rollback(_capture_exception=True)
3374
3375 def bulk_save_objects(
~/.virtualenvs/birdnest-QUrl1afS/lib/python3.8/site-packages/sqlalchemy/util/langhelpers.py in __exit__(self, type_, value, traceback)
68 self._exc_info = None # remove potential circular references
69 if not self.warn_only:
---> 70 compat.raise_(
71 exc_value,
72 with_traceback=exc_tb,
~/.virtualenvs/birdnest-QUrl1afS/lib/python3.8/site-packages/sqlalchemy/util/compat.py in raise_(***failed resolving arguments***)
196
197 try:
--> 198 raise exception
199 finally:
200 # credit to
~/.virtualenvs/birdnest-QUrl1afS/lib/python3.8/site-packages/sqlalchemy/orm/session.py in _flush(self, objects)
3331 self._warn_on_events = True
3332 try:
-> 3333 flush_context.execute()
3334 finally:
3335 self._warn_on_events = False
~/.virtualenvs/birdnest-QUrl1afS/lib/python3.8/site-packages/sqlalchemy/orm/unitofwork.py in execute(self)
451 else:
452 for rec in topological.sort(self.dependencies, postsort_actions):
--> 453 rec.execute(self)
454
455 def finalize_flush_changes(self):
~/.virtualenvs/birdnest-QUrl1afS/lib/python3.8/site-packages/sqlalchemy/orm/unitofwork.py in execute(self, uow)
572 states = self._elements(uow)
573 if self.isdelete:
--> 574 self.dependency_processor.process_deletes(uow, states)
575 else:
576 self.dependency_processor.process_saves(uow, states)
~/.virtualenvs/birdnest-QUrl1afS/lib/python3.8/site-packages/sqlalchemy/orm/dependency.py in process_deletes(self, uowcommit, states)
550 ):
551 if child is not None:
--> 552 self._synchronize(
553 state, child, None, True, uowcommit, False
554 )
~/.virtualenvs/birdnest-QUrl1afS/lib/python3.8/site-packages/sqlalchemy/orm/dependency.py in _synchronize(self, state, child, associationrow, clearkeys, uowcommit, pks_changed)
608 return
609 if clearkeys:
--> 610 sync.clear(dest, self.mapper, self.prop.synchronize_pairs)
611 else:
612 sync.populate(
~/.virtualenvs/birdnest-QUrl1afS/lib/python3.8/site-packages/sqlalchemy/orm/sync.py in clear(dest, dest_mapper, synchronize_pairs)
84 ):
85
---> 86 raise AssertionError(
87 "Dependency rule tried to blank-out primary key "
88 "column '%s' on instance '%s'" % (r, orm_util.state_str(dest))
AssertionError: Dependency rule tried to blank-out primary key column 'playlist_track.playlist_id' on instance '<PlaylistTrack at 0x1075e5850>'
A playlist had a track repeated because of a JQBX error. I wanted to remove the duplicate using python code, and when I tried to assign a revised list of Track objects to the playlist, I got this error:
It's a rare use-case, but solving it might help understand AssociationProxy better.