У меня есть класс Item
, чей id
является первичным ключом и автоматически сгенерирован. Теперь я читаю данные из другого внешнего источника, создаю объект Item
и должен проверить, присутствует ли этот объект в моей таблице items
. Как это сделать?
SQLAlchemy: проверьте, присутствует ли объект в таблице.
Ответ 1
Вы можете запросить элементы, которые имеют одинаковые атрибуты, и проверить, больше ли число count больше нуля.
if session.query(Item.id).filter(Item.email==newItem.email,
Item.type==newItem.type).count() > 0:
// item exists
Ответ 2
Наиболее эффективным способом является использование exists()
q = session.query(Item.id).filter(Item.email==email)
session.query(q.exists()).scalar() # returns True or False
Ответ 3
Вы можете попробовать что-то похожее на это:
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'
У этого есть проблема, что он действует на фиксацию, а затем откат...
Другой вариант, если вы можете проверить свойства по отдельности, это может сработать:
session.query(Item).filter_by(x=item.x, y=item.y).count() == 0