Je suis nouveau à Sqlalchemy. J'ai actuellement: Comment puis-je modifier ceci afin que cela ajoute uniquement l'objet s'il n'existe pas déjà? Ce serait bien ... p> merci! P> p>
3 Réponses :
Le modèle standard semblerait être:
ev = model.Session.query(model.EnumerationValue).filter(model.EnumerationValue.key==key_level_2).filter(model.EnumerationValue.code==level_2).count() if not ev: ev = model.EnumerationValue(key=key_level_2, code=level_2) ev.keyvalues[key_parent] = level_1 model.Session.add(ev)
L'approche semble correcte, mais je pense que le code est effectivement cassé. J'ai quelque chose localement qui fonctionne, mais cela pourrait ne pas être qualifié de "la seule vraie solution".
Soin de partager votre solution?
J'ai trouvé Cette recette en regardant Pour un motif pour résoudre un problème similaire que j'ai. Je pense que cela pourrait être une solution agréable et propre sinon "la seule vraie" solution à ce que vous cherchiez à l'origine. P>
Je fais habituellement quelque chose comme le suivant
from sqlalchemy.exc import NoResultFound try: ev = model.Session.query(model.EnumerationValue).filter(model.EnumerationValue.key==key_level_2).filter(model.EnumerationValue.code==level_2).one() except ResultNotFound: ev = model.EnumerationValue(key=key_level_2, code=level_2) ev.keyvalues[key_parent] = level_1 model.Session.add(ev)