7
votes

SQLALCHEMY: Créer un objet si n'existe pas déjà?

Je suis nouveau à Sqlalchemy. J'ai actuellement: xxx

Comment puis-je modifier ceci afin que cela ajoute uniquement l'objet s'il n'existe pas déjà? Ce serait bien ... xxx

merci!


0 commentaires

3 Réponses :


3
votes

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)


2 commentaires

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?



3
votes

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.


0 commentaires

0
votes

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)


0 commentaires