Ho una classe Item
di cui id
è una chiave primaria e generata automaticamente. Ora leggo i dati da qualche altra fonte esterna, creo un oggetto Item
e devo controllare se questo oggetto è già presente nella mia tabella items
. Come lo faccio?SQLAlchemy: verificare se l'oggetto è già presente nella tabella
risposta
È possibile eseguire una query per gli articoli con gli stessi attributi e verificare se il conteggio è maggiore di zero.
if session.query(Item.id).filter(Item.email==newItem.email,
Item.type==newItem.type).count() > 0:
// item exists
Il '> 0' è ridondante poiché count() restituisce zero se non vengono trovate corrispondenze e un numero intero positivo altrimenti. – kalu
@kalu: "L'esplicito è meglio che implicito." - The Zen of Python –
L'utilizzo di count rende il database più utile di quanto necessario. Vedi la mia risposta qui sotto per un metodo efficiente. – Salami
Si potrebbe provare qualcosa di simile a questo:
from sqlalchemy import exc
try:
session.add(item)
session.commit()
except exc.IntegrityError:
session.rollback()
print 'This item fails one of the unique/foreign key checks!'
except:
print 'There was another error'
raise
else:
print 'Everything is OK'
Questo ha il problema che agisce su di commettere, e poi rotola indietro ...
Un'altra opzione, se è possibile controllare le proprietà individualmente, allora questo potrebbe funzionare:
session.query(Item).filter_by(x=item.x, y=item.y).count() == 0
Il modo più efficace è quello di utilizzare exists()
q = session.query(Item.id).filter(Item.email==email)
session.query(q.exists()).scalar() # returns True or False
- 1. Verificare il valore se presente nella colonna
- 2. Qual è il modo migliore per verificare se un UIAlertController è già presente?
- 3. Come verificare se l'estensione PECL è presente?
- 4. Come verificare se jQuery è già nella cache?
- 5. Flask-SQLAlchemy controlla se esiste una riga nella tabella
- 6. Una route denominata "MS_attributerouteWebApi" è già presente nella raccolta route
- 7. Compreso dinamicamente jQuery utilizzando JavaScript se non è già presente
- 8. come rilevare se la modalità di azione è già presente
- 9. SqlAlchemy: crea l'oggetto se non esiste già?
- 10. Come verificare se id esiste già - codeigniter
- 11. Verificare se il valore esiste già nella lista dei dizionari?
- 12. Come verificare se il file esiste già nella cartella
- 13. Verificare se un elemento è presente in un sacchetto?
- 14. Come verificare se la connessione Internet è presente in java?
- 15. BigQuery - Verifica se la tabella esiste già
- 16. Come verificare se un oggetto è presente nella scena o non in THREE.js?
- 17. Come testare se esiste già una tabella?
- 18. Aggiungere un id a un elenco se non è già presente
- 19. Verificare se un file esiste nella destinazione makefile e chiudere se non presente
- 20. JPA Java: Performant verifica se Entity è già presente nel DB
- 21. Come verificare se un viewStub è già gonfiato?
- 22. Come verificare se una sessione ChromeCast è già in corso
- 23. Come verificare se un'applicazione WPF è già in esecuzione?
- 24. Come verificare se un file è già aperto in C
- 25. Verificare se il file è già nel controllo sorgente
- 26. Come verificare se un'attività è già in Python Queue?
- 27. Come verificare se un'app Firebase è già inizializzata su Android
- 28. JavaScript: come verificare se l'evento è già stato aggiunto
- 29. Verificare se un CALayer è già aggiunto come sottolivello
- 30. Verificare se un evento esiste già
È uno scenario '' get_or_create''? In tal caso: http://stackoverflow.com/questions/2546207/does-sqlalchemy-have-an-equivalent-of-djangos-get-or-create –
@DemianBrecht, grazie per la risposta, ma no, non lo è . – missingfaktor
@missingfaktor come fai a sapere se esiste già? Basato sulla chiave primaria? O qualche altra chiave unica? – jadkik94