ホームページ  >  に質問  >  本文

「現在のテーブル」にレコードが存在しない場合にのみ、「new_table」への Scrapy INSERT

Webサイトのスクレイピングを試してみました。現在のデータベーステーブルからデータを正常にスクレイピングしました。ただし、「現在のテーブル」にレコードが存在しない場合にのみ「new_table」を挿入したいです

私のコードは(パイプライン)です

リーリー

正常に動作せず、エラーが発生します。

リーリー

一意の product_id を持っています。

現在のテーブルに product_id がない場合は、この product_id を「new_products」に挿入します

これどうやって作るの?

###ありがとう。

最終編集: このエラーが発生しました。

ああああ

P粉122932466P粉122932466203日前349

全員に返信(1)返信します

  • P粉278379495

    P粉2783794952024-03-30 00:30:37

    存在しない場合に挿入したいだけの場合は、何もする必要はありません。すべてを選択して、探しているものがそこにあるかどうかを確認する必要はありません。

    必要なのは、テーブル 2produc_id

    に対する一意のインデックスを作成することです。

    次に、コードを次のように変更します:

    リーリー

    ON DUPLICATE KEY を使用すると、重複する行 (すでに存在する product_id) が見つかると、システムは product_id を同じ product_id に更新しようとするため、有効になりません。

    autocommit=True が設定されている場合、これらのコミットは削除できます。

    ######編集######

    コメントで述べたように、テーブルにテーブルが存在しない場合にのみ新しいテーブルに挿入する必要がある場合は、コードを次のように変更できます。

    row

    パラメータの値を変更しているため、行

    old_ids = [row[0] for row incursor.fetchall()]

    の変数名を変更する必要があります。 2. 問題は if ステートメントにあります。product_id 変数が存在しないため、変更する必要があります リーリー

    返事
    0
  • キャンセル返事