특정 해시 태그의 트윗을 트위터 검색 API에서 마이닝하여 장고 ORM을 사용하여 Postgresql 데이터베이스에 저장합니다.Django 데이터베이스에서 중복 객체를 제거하는 가장 좋은 방법은 무엇입니까
다음은이 루틴을 처리하는 내 tasks.py
파일의 코드입니다.
"""Get some tweets and store them to the database using Djano's ORM."""
import tweepy
from celery import shared_task
auth = tweepy.OAuthHandler(CONSUMER_KEY, CONSUMER_SECRET)
auth.set_access_token(ACCESS_TOKEN, ACCESS_TOKEN_SECRET)
api = tweepy.API(auth, wait_on_rate_limit=True)
@shared_task(name='get_tweets')
"""Get some tweets from the twiter api and store them to the db."""
def get_tweets():
tweets = api.search(
q='#python',
since='2016-06-14',
until='2016-06-21',
count=5
)
tweets_date = [tweet.created_at for tweet in tweets]
tweets_id = [tweet.id for tweet in tweets]
tweets_text = [tweet.text for tweet in tweets]
for i, j, k in zip(tweets_date, tweets_id, tweets_text):
update = Tweet(
tweet_date=i,
tweet_id=j,
tweet_text=k
)
update.save()
은 여기 내 models.py
from django.db import models
class Tweet(models.Model):
tweet_date = models.DateTimeField()
tweet_id = models.CharField(max_length=50, unique=True)
tweet_text = models.TextField()
def __str__(self):
return str(self.tweet_date) + ' | ' + str(self.tweet_id)
나는 점점 오전 중복, 트위터 API로 할 수 있습니다.
개체가 데이터베이스에 저장되기 전에 중복을 확인하는 방법이 있습니까? 여기 :
for i, j, k in zip(tweets_date, tweets_id, tweets_text):
update = Tweet(
tweet_date=i,
tweet_id=j,
tweet_text=k
)
update.save()
여기서 추출 과정에서 내가 돌볼 수있는이 뭔가가 아니면 내가 변환 단계에서와 같이, 이후 정리해야 뭔가?
어떤 필드 당신이 말할 때 다스 려하는'duplicate'하는 일을 할 수 있습니까? –
'tweet_id'는 유일해야합니다.이 모델에서는 모델에 고유하게 설정되어 있지만, Celery가 새로운 객체를 생성하여 데이터베이스에 저장하려고하면 키 오류가 발생하여 중단됩니다. –