"pero ¿cómo debería uno hacerlo en su lugar?"
Tough call. El problema es que están conectando metadatos (específicamente nombres de columnas) sobre la marcha en una declaración SQL. No soy un gran admirador de este tipo de cosas. La variable sourcedest
tiene dos nombres de columna que se actualizarán.
Las probabilidades son buenas de que solo haya uno (o unos pocos) pares de nombres de columna que realmente se usen. Mi preferencia es hacer esto.
if situation1:
stmt= "INSERT INTO mastertickets (this, that) VALUES (?, ?)"
elif situation2:
stmt= "INSERT INTO mastertickets (foo, bar) VALUES (?, ?)"
else:
raise Exception("Bad configuration -- with some explanation")
cursor.execute(stmt, (self.tkt.id, n))
Cuando hay más de una combinación válida de columnas para este tipo de cosas, indica que el modelo de datos se ha fusionado dos entidades en una sola tabla, que es un problema común de diseño de base de datos. Dado que está trabajando con un producto y un complemento, no hay mucho que pueda hacer sobre los problemas del modelo de datos.
Esa es una pieza apestosa de código. ¿Dónde encontraste eso? Eso es algo que me gustaría evitar. –
complemento mastertickets para trac – Epaga
oh y por curiosidad ... estoy de acuerdo que no es muy legible (de ahí la pregunta;), pero ¿cómo debería uno hacerlo en su lugar? – Epaga