Löschen eines Objekts aus der Auflistung in SQLAlchemy
Ich speichere eine Reihe von Patentdaten in einer MySQL-Datenbank und interagiere mit dieser über SQLAlchemy. Ich habe eine Sammlung innerhalb der Patentklasse, die die Liste der Abtretungsempfänger darstellt (die Unternehmen, denen das Patent erteilt wurde):
<code>assignees = relationship('Company', secondary=patent_company_table, backref='patents') </code>
Ich bearbeite einige der in der Datenbank gespeicherten Objekte und ein Patentobjektp
Ich möchte einen Rechtsnachfolger löschena
(ein Unternehmensgegenstand) vonp
Liste der Bevollmächtigten. Basiert aufhttp://docs.sqlalchemy.org/en/latest/orm/session.html#deleting-from-collections Es scheint, als würde er anrufens.delete(a)
wird tatsächlich das Firmenobjekt löschena
. Ich möchte einfach den Rechtsnachfolger entfernena
aus der Liste der Zuständigen fürp
(d. h. entfernen Sie eine Zeile in der patent_company_table). Löschen Sie das Company-Objekt NICHT, weila
möglicherweise in der Liste der Rechtsnachfolger eines anderen Patentgegenstandes.
Ich habe versucht, eine neue Liste zu erstellennew_assignees
das schließt nur die Empfänger von einp
Außerdema
und dann angerufen:
<code>p.assignees = new_assignees s.add(p) </code>
Dies markiert leider eigentlich nichtp
als schmutzig, also nehme ich an, es würde die Datenbank nicht beeinflussen.
Haben Sie Vorschläge, wie Sie ein Objekt aus der Sammlung entfernen und die Zeile in der patent_company_table löschen können, anstatt das Objekt aus der Company-Tabelle zu löschen?
Vielen Dank.
AKTUALISIERENHier ist ein Ausschnitt aus dem Code:
<code>assignees = patent.assignees for assignee in assignees: if assignee in duplicate_company_to_default: patent.assignees.remove(assignee) default_company = duplicate_company_to_default[assignee] if default_company not in assignees: added_patent_count += 1 patent.assignees.append(default_company) </code>
Nachdem alle Patente durchlaufen wurden,added_patent_count = 983672
aber es sind keine Objekte insession.dirty()
. Muss ich nach der Änderung über manuell zur Sitzung hinzufügen?append
oderremove
?