从Django数据库中删除重复对象的最佳方法是什么

时间:2016-06-22 13:11:22

标签: python django postgresql celery

我正在挖掘Twitter Search API以获取某个主题标签的推文,并使用Django ORM将它们存储到Postgresql数据库中。

以下是处理此例程的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)

我正在获取重复项,请访问Twitter 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()

这是我在提取过程中可以处理的事情,还是我需要在之后进行清理的事情,比如在转型阶段?

1 个答案:

答案 0 :(得分:1)

您可以让模特经理为您完成工作

import { Component, OnInit } from '@angular/core';
import {AbstractControl,FORM_DIRECTIVES } from '@angular/common';

@Component({
    selector:'dropdown',
    templateUrl:'app/components/dropdown/dropdown.component.html',
    directives:[FORM_DIRECTIVES]
})
export class DropdownComponent implements OnInit
{
    car:Car;
    colours: Array<Colour>;

    ngOnInit(): void {

        this.colours = Array<Colour>();
        this.colours.push(new Colour(-1, 'Please select'));
        this.colours.push(new Colour(1, 'Green'));
        this.colours.push(new Colour(2, 'Pink'));

        this.car = new Car();
        this.car.colour = this.colours[1];        
    }
}

export class Car  
{
    colour:Colour;
}

export class Colour
{
    constructor(id:number, name:string) {
        this.id=id;
        this.name=name;
    }

    id:number;
    name:string;
}