Eliminar un objeto de la colección en SQLAlchemy
Estoy almacenando un montón de datos de patentes en una base de datos MySQL e interactuando con ellos a través de SQLAlchemy. Tengo una colección dentro de la clase de Patentes que representa la lista de cesionarios (las empresas a las que se les asignó la patente):
<code>assignees = relationship('Company', secondary=patent_company_table, backref='patents') </code>
Estoy procesando algunos de los objetos almacenados en la base de datos y para un objeto de Patentep
, Quiero borrar algun cesionarioa
(un objeto de la Compañía) dep
Lista de cesionarios. Basado enhttp://docs.sqlalchemy.org/en/latest/orm/session.html#deleting-from-collections , parece que llamandos.delete(a)
en realidad borrará el objeto de la Compañíaa
. Simplemente quiero eliminar al cesionarioa
de la lista de cesionarios parap
(es decir, eliminar una fila en la tabla_compatibilidad_compañía), NO eliminar realmente el objeto de la Compañía, porquea
podría estar en la lista de cesionarios de otro objeto de Patente.
Intenté crear una nueva listanew_assignees
que solo incluye a los cesionarios dep
ademása
y luego se llama:
<code>p.assignees = new_assignees s.add(p) </code>
Esto lamentablemente no marca realmentep
tan sucio, así que asumo que no afectaría a la base de datos.
¿Tiene alguna sugerencia sobre cómo eliminar un objeto de la colección, eliminando la fila en la tabla_company_company_table en lugar de eliminar el objeto de la tabla de la Compañía?
Gracias.
ACTUALIZARAquí hay un fragmento del código:
<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>
Después de recorrer todas las patentes,added_patent_count = 983672
pero no hay objetos ensession.dirty()
. ¿Necesito agregar manualmente a la sesión después de modificar víaappend
oremove
?