0

get_or_create の get でフィールドを更新する簡単な方法はありますか? クラス ItemCategory があり、新しいエントリを作成するか、既に作成されたエントリを取得してフィールド (update_date) を更新したいと考えています。私がすることは:

item,created= ItemCategory.get_or_create(cat=cat_id,item=item_id)
if created == True:
     print "created"
else:
     item.update_date = datetime.now
     item.somethingelse = 'aaa'
     item.save()

これは私のループでしばらく機能します。しかし、50 ~ 100 回の get/create の後、クラッシュします。

peewee.InterfaceError: パラメータ 4 のバインド エラー - おそらくサポートされていない型です。

upsert() を使用する必要があるかもしれません。試してみましたが、何も機能しませんでした。また、フィールドだけでなく行全体を置き換えるため、おそらく最善の解決策ではありません。

私は peewee が好きです。とても使いやすくて速いのですが、完全な例があまり見つからないのが残念です。

4

1 に答える 1

1

初心者の間違い

item.update_date = datetime.now()

ただし、これが唯一の答えであると100%確信しているわけではありません。コードを何度も変更したため、別のものである可能性もあります。

create_or_update に関する私の質問に関して、私はこれを行いました:

try:
    Item.create(...)
except IntegrityError:
    Item.update(...)

peewee は本当に素晴らしい。

于 2016-08-23T07:14:28.187 に答える