私はPostgreSQLとpsycopg2に取り組んでいます。10 分ごとに更新されるフィード データを取得し、このフィードの内容を PostgreSQL データベースに保持しようとしています。私の目標は、そのテーブルからそれらのデータを取得して印刷することです。しかし、テーブルへの挿入操作のために、そのスクリプトを実行するたびに重複データもデータベースに保存されるという問題に直面しています。
この問題を解決するために、フィード データを格納するlocation_title
テーブルの列の主キー制約を作成しましたが、エラーに直面しています。Locations-musiq1
これが私のコードです:
import psycopg2
import sys
import feedparser
import codecs
import psycopg2.extensions
# Parsing data from Geofeed location feeds
data = feedparser.parse("some URL")
psycopg2.extensions.register_type(psycopg2.extensions.UNICODE)
try:
conn=psycopg2.connect("dbname='name' user='postgres' host='localhost' password='abcds'")
conn.set_client_encoding('UNICODE')
except:
print "I am unable to connect to the database, exiting."
sys.exit()
cur=conn.cursor()
for i in range(len(data['entries'])):
cur.execute("INSERT INTO locations_musiq1(location, location_title) VALUES (%s, %s)", (data.entries[i].title,data.entries[i].summary))
conn.commit()
cur.execute("SELECT * FROM locations_musiq1;")
cur.fetchone()
for row in cur:
print ' '.join(row[1:])
cur.close()
conn.close()
「locations_musiq1」テーブル列「location_title」を主キーとして変更した後の私のエラーは次のとおりです。
トレースバック (最新の呼び出しが最後): ファイル「F:\JavaWorkspace\Test\src\postgr_example.py」の 28 行目 cur.execute("INSERT INTO locations_musiq1(location, location_title) VALUES (%s, %s)", (data.entries[i].title,data.entries[i].summary)) psycopg2.IntegrityError: 重複するキー値が一意の制約 "locations_musiq1_pkey" に違反しています
誰でもこの問題から抜け出す方法を思いつきますか?..よろしくお願いします..