主キーで自動生成されたクラスItem
があります。id
次に、他の外部ソースからデータを読み取り、Item
オブジェクトを作成し、このオブジェクトがitems
テーブルにすでに存在するかどうかを確認する必要があります。どうすればいいのですか?
質問する
18056 次
3 に答える
17
最も効率的な方法は、exists()を使用することです
q = session.query(Item.id).filter(Item.email==email)
session.query(q.exists()).scalar() # returns True or False
于 2016-05-15T11:54:52.030 に答える
11
同じ属性を持つアイテムをクエリして、カウントがゼロより大きいかどうかを確認できます。
if session.query(Item.id).filter(Item.email==newItem.email,
Item.type==newItem.type).count() > 0:
// item exists
于 2012-10-05T16:24:49.497 に答える
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
于 2012-10-05T16:32:15.933 に答える