python类delete_multi()的实例源码

util.py 文件源码 项目:vishnu 作者: anomaly 项目源码 文件源码 阅读 17 收藏 0 点赞 0 评论 0
def gae_ndb_delete_expired_sessions(dormant_for=86400, limit=500):
    """Deletes expired sessions
       A session is expired if it expires date is set and has passed or
       if it has not been accessed for a given period of time.
       max_age: seconds since last access to delete sessions, defaults
       to 24 hours.
       limit: amount to delete in one call of the method, the maximum
       and default for this is the NDB fetch limit of 500"""
    from vishnu.backend.client.ndb.gae import VishnuSession
    from google.appengine.ext import ndb
    from datetime import datetime
    from datetime import timedelta

    now = datetime.utcnow()
    last_accessed = now - timedelta(seconds=dormant_for)

    query = VishnuSession.query(ndb.OR(
        ndb.AND(VishnuSession.expires <= now, VishnuSession.expires != None),
        VishnuSession.last_accessed <= last_accessed
    ))
    results = query.fetch(keys_only=True, limit=limit)

    ndb.delete_multi(results)

    return len(results) < limit
love_link.py 文件源码 项目:love 作者: Yelp 项目源码 文件源码 阅读 16 收藏 0 点赞 0 评论 0
def love_links_cleanup():
    """
    Deletes love links that are more than a month (30 days) old.
    """
    earliest = datetime.datetime.now() - datetime.timedelta(days=30)
    love_links_keys = LoveLink.query(LoveLink.timestamp <= earliest).fetch(keys_only=True)
    logging.info('Preparing to delete love links older than {}.'.format(str(earliest)))
    ndb.delete_multi(love_links_keys)
    logging.info('Love links older than {} were deleted.'.format(str(earliest)))

    return
love_count.py 文件源码 项目:love 作者: Yelp 项目源码 文件源码 阅读 19 收藏 0 点赞 0 评论 0
def rebuild_love_count():
    set_toggle_state(LOVE_SENDING_ENABLED, False)

    logging.info('Rebuilding LoveCount table...')
    ndb.delete_multi(LoveCount.query().fetch(keys_only=True))
    for l in Love.query().iter(batch_size=1000):
        LoveCount.update(l)
    logging.info('Done.')

    set_toggle_state(LOVE_SENDING_ENABLED, True)
user.py 文件源码 项目:electron-crash-reporter 作者: lipis 项目源码 文件源码 阅读 23 收藏 0 点赞 0 评论 0
def delete_user_dbs(user_db_keys):
  ndb.delete_multi(user_db_keys)
user.py 文件源码 项目:meet-notes 作者: lipis 项目源码 文件源码 阅读 27 收藏 0 点赞 0 评论 0
def delete_user_dbs(user_db_keys):
  ndb.delete_multi(user_db_keys)
post.py 文件源码 项目:vote4code 作者: welovecoding 项目源码 文件源码 阅读 16 收藏 0 点赞 0 评论 0
def _pre_delete_hook(cls, key):
    post_db = key.get()
    vote_keys = post_db.get_vote_dbs(keys_only=True, limit=-1)[0]
    comment_keys = post_db.get_comment_dbs(keys_only=True, limit=-1)[0]
    ndb.delete_multi(vote_keys + comment_keys)
language.py 文件源码 项目:vote4code 作者: welovecoding 项目源码 文件源码 阅读 16 收藏 0 点赞 0 评论 0
def _pre_delete_hook(cls, key):
    language_db = key.get()
    post_keys = language_db.get_post_dbs(keys_only=True, limit=-1)[0]
    ndb.delete_multi(post_keys)
post.py 文件源码 项目:vote4code 作者: welovecoding 项目源码 文件源码 阅读 20 收藏 0 点赞 0 评论 0
def delete(self):
    post_keys = util.param('post_keys', list)
    if not post_keys:
      helpers.make_not_found_exception('Post(s) %s not found' % post_keys)
    post_db_keys = [ndb.Key(urlsafe=k) for k in post_keys]
    ndb.delete_multi(post_db_keys)
    return flask.jsonify({
      'result': post_keys,
      'status': 'success',
    })
vote.py 文件源码 项目:vote4code 作者: welovecoding 项目源码 文件源码 阅读 24 收藏 0 点赞 0 评论 0
def delete(self):
    vote_keys = util.param('vote_keys', list)
    if not vote_keys:
      helpers.make_not_found_exception('Vote(s) %s not found' % vote_keys)
    vote_db_keys = [ndb.Key(urlsafe=k) for k in vote_keys]
    ndb.delete_multi(vote_db_keys)
    return flask.jsonify({
      'result': vote_keys,
      'status': 'success',
    })
comment.py 文件源码 项目:vote4code 作者: welovecoding 项目源码 文件源码 阅读 29 收藏 0 点赞 0 评论 0
def delete(self):
    comment_keys = util.param('comment_keys', list)
    if not comment_keys:
      helpers.make_not_found_exception('Comment(s) %s not found' % comment_keys)
    comment_db_keys = [ndb.Key(urlsafe=k) for k in comment_keys]
    ndb.delete_multi(comment_db_keys)
    return flask.jsonify({
      'result': comment_keys,
      'status': 'success',
    })
user.py 文件源码 项目:vote4code 作者: welovecoding 项目源码 文件源码 阅读 23 收藏 0 点赞 0 评论 0
def delete_user_dbs(user_db_keys):
  ndb.delete_multi(user_db_keys)
tasks_test.py 文件源码 项目:beans 作者: Yelp 项目源码 文件源码 阅读 19 收藏 0 点赞 0 评论 0
def test_generate_meeting_specs(database):
    # delete current specs
    keys = [key for key in MeetingSpec.query().iter(keys_only=True)]
    ndb.delete_multi(keys)
    meeting_specs = MeetingSpec.query().fetch()
    assert len(meeting_specs) == 0

    # ensure we create new specs
    generate_meeting_specs()
    meeting_specs = MeetingSpec.query().fetch()
    assert len(meeting_specs) == 2
tournament_handler.py 文件源码 项目:tichu-tournament 作者: aragos 项目源码 文件源码 阅读 16 收藏 0 点赞 0 评论 0
def delete(self, id):
    user = users.get_current_user()
    tourney = GetTourneyWithIdAndMaybeReturnStatus(self.response, id)
    if not tourney:
      return

    if not CheckUserOwnsTournamentAndMaybeReturnStatus(self.response, user,
                                                       tourney):
      return

    self.response.set_status(204)
    ndb.delete_multi(ndb.Query(ancestor=tourney.key).iter(keys_only = True))
snippets.py 文件源码 项目:appbackendapi 作者: codesdk 项目源码 文件源码 阅读 19 收藏 0 点赞 0 评论 0
def operate_on_multiple_keys_at_once(list_of_entities):
    list_of_keys = ndb.put_multi(list_of_entities)
    list_of_entities = ndb.get_multi(list_of_keys)
    ndb.delete_multi(list_of_keys)
parent_child_models_test.py 文件源码 项目:appbackendapi 作者: codesdk 项目源码 文件源码 阅读 15 收藏 0 点赞 0 评论 0
def test_phone_numbers(contact_key):
    """A test for 'phone_numbers' property."""
    models.PhoneNumber(parent=contact_key,
                       phone_type='home',
                       number='(650) 555 - 2200').put()
    models.PhoneNumber(parent=contact_key,
                       phone_type='mobile',
                       number='(650) 555 - 2201').put()
    contact = contact_key.get()
    for phone in contact.phone_numbers:
        # it doesn't ensure any order
        if phone.phone_type == 'home':
            assert '(650) 555 - 2200' == phone.number
        elif phone.phone_type == 'mobile':
            assert phone.number == '(650) 555 - 2201'

    # filer the phone numbers by type. Note that this is an
    # ancestor query.
    query = contact.phone_numbers.filter(
        models.PhoneNumber.phone_type == 'home')
    entities = query.fetch()
    assert 1 == len(entities)
    assert entities[0].number == '(650) 555 - 2200'

    # delete the mobile phones
    query = contact.phone_numbers.filter(
        models.PhoneNumber.phone_type == 'mobile')
    ndb.delete_multi([e.key for e in query])

    # make sure there's no mobile phones any more
    query = contact.phone_numbers.filter(
        models.PhoneNumber.phone_type == 'mobile')
    entities = query.fetch()
    assert 0 == len(entities)
main.py 文件源码 项目:cas-eval 作者: varepsilon 项目源码 文件源码 阅读 14 收藏 0 点赞 0 评论 0
def main():
    user = users.get_current_user()
    if not user:
        return flask.redirect(users.create_login_url(flask.request.path))

    if flask.request.method == 'POST':
        util.csrf_protect()
        tab_ids = flask.request.values.getlist('tab_id')
        keys = [ndb.Key(Session, tab_id) for tab_id in tab_ids]
        if 'delete' in flask.request.values:
            if not all(s and s.user_id == user.user_id() for s in ndb.get_multi(keys)):
                return 'Not authorized to delete some sessions', 403
            ndb.delete_multi(keys)
        elif 'share' in flask.request.values:
            for key in keys:
                session = key.get()
                if session and session.user_id == user.user_id():
                    session.shared = True
                    session.put()
        else:
            return 'Incorrect POST name', 400
    date = flask.request.values.get('date', datetime.now().strftime('%Y-%m-%d'))
    cur_day = datetime.strptime(date, '%Y-%m-%d')
    next_day = cur_day + timedelta(days=1)
    sessions = (Session.query(Session.user_id == user.user_id(),
                Session.start_ts >= cur_day, Session.start_ts < next_day)
            .order(-Session.start_ts))
    num_shared = Session.query(Session.user_id == user.user_id(), Session.shared == True).count()
    return flask.render_template('main.html',
                                 user=user,
                                 date=date,
                                 year=datetime.now().year,
                                 logout_url=users.create_logout_url('/'),
                                 sessions=sessions,
                                 num_shared=num_shared)
context.py 文件源码 项目:Deploy_XXNET_Server 作者: jzp820927 项目源码 文件源码 阅读 17 收藏 0 点赞 0 评论 0
def _flush_ndb_deletes(self, items, options):
    """Flush all deletes to datastore."""
    assert ndb is not None
    ndb.delete_multi(items, config=self._create_config(options))
data.py 文件源码 项目:skojjt 作者: martin-green 项目源码 文件源码 阅读 15 收藏 0 点赞 0 评论 0
def cleanup():
        cutoffdate = datetime.datetime.now() - datetime.timedelta(days=30)
        keys = TaskProgress.query(TaskProgress.created < cutoffdate).fetch(keys_only=True)
        ndb.delete_multi(keys)
dataimport.py 文件源码 项目:skojjt 作者: martin-green 项目源码 文件源码 阅读 23 收藏 0 点赞 0 评论 0
def DeleteAllData():
    entries = []
    entries.extend(Person.query().fetch(keys_only=True))
    entries.extend(Troop.query().fetch(keys_only=True))
    entries.extend(ScoutGroup.query().fetch(keys_only=True))
    entries.extend(Meeting.query().fetch(keys_only=True))
    entries.extend(TroopPerson.query().fetch(keys_only=True))
    entries.extend(Semester.query().fetch(keys_only=True))
    entries.extend(TaskProgress.query().fetch(keys_only=True))
    entries.extend(UserPrefs.query().fetch(keys_only=True))
    ndb.delete_multi(entries)
    ndb.get_context().clear_cache() # clear memcache
modeltokenauth.py 文件源码 项目:enkiWS 作者: juliettef 项目源码 文件源码 阅读 17 收藏 0 点赞 0 评论 0
def revoke_user_authentications( cls, user_id ):
        tokens = cls.fetch_keys_by_user_id( user_id )
        if tokens:
            ndb.delete_multi( tokens )
modelrestapidatastore.py 文件源码 项目:enkiWS 作者: juliettef 项目源码 文件源码 阅读 19 收藏 0 点赞 0 评论 0
def delete_user_app_data( cls, user_id, app_id ):
        keys = cls.fetch_by_user_id_app_id( user_id, app_id )
        ndb.delete_multi( keys )
handlersrestapi.py 文件源码 项目:enkiWS 作者: juliettef 项目源码 文件源码 阅读 16 收藏 0 点赞 0 评论 0
def post( self ):
        jsonobject = json.loads( self.request.body )
        success = False
        error = 'Invalid request'
        answer = {}
        if jsonobject:
            user_id = int( jsonobject.get( 'user_id', ''))
            auth_token = jsonobject.get( 'auth_token', '')
            app_secret = jsonobject.get( 'app_secret', '')
            data_type = jsonobject.get( 'data_type', '')
            data_id = jsonobject.get( 'data_id', '')
            if user_id and auth_token and app_secret and data_type and data_id:
                if EnkiModelApp.check_secret( user_id, auth_token, app_secret ):
                    token_valid = EnkiModelRestAPITokenVerify.get_by_user_id_token( user_id, auth_token )
                    if token_valid:   # user is valid
                        data_stores = EnkiModelRestAPIDataStore.fetch_by_user_id_app_id_data_type_data_id( user_id, token_valid.app_id, data_type, data_id )
                        ndb.delete_multi( data_stores )
                        success = True
                        error = ''
                    else:
                        error = 'Unauthorised user'
                else:
                    error = 'Unauthorised app'
        answer.update({ 'success' : success, 'error' : error })
        self.response.headers[ 'Content-Type' ] = 'application/json'
        self.response.write( json.dumps( answer, separators=(',',':') ))
modelmessage.py 文件源码 项目:enkiWS 作者: juliettef 项目源码 文件源码 阅读 15 收藏 0 点赞 0 评论 0
def delete_user_messages( cls, user_id ):
        ndb.delete_multi( cls.fetch_keys_sent_or_received( user_id ))
handlerbase.py 文件源码 项目:enkiWS 作者: juliettef 项目源码 文件源码 阅读 19 收藏 0 点赞 0 评论 0
def log_out( self ):
    # log out the currently logged in user
        self._just_checked_logged_in = False
        self._am_logged_in = False
        token = self.session.get( 'auth_token' )
        token_key = EnkiModelTokenAuth.fetch_keys_by_user_id_token( self.user_id, token )
        if token_key:
            # delete the token from the db
            ndb.delete_multi( token_key )
            #delete the session
            self.session.clear()
handlerbase.py 文件源码 项目:enkiWS 作者: juliettef 项目源码 文件源码 阅读 17 收藏 0 点赞 0 评论 0
def email_rollback( self, token ):
        email = token.email
        user_id = token.user_id
        # change the email
        user = self.set_email( email, user_id )
        if user:
            # retrieve all rollback tokens that are more recent, including the current one, and delete them
            tokenDateCreated = token.time_created
            youngerTokens = EnkiModelTokenEmailRollback.fetch_keys_by_user_id_time( user_id, tokenDateCreated )
            if youngerTokens:
                ndb.delete_multi( youngerTokens )
            # delete all potential remaining email verify tokens for that user
            userTokens = EnkiModelTokenVerify.fetch_keys_by_user_id_type( user_id, 'emailchange' )
            if userTokens:
                ndb.delete_multi( userTokens )
modeltokenverify.py 文件源码 项目:enkiWS 作者: juliettef 项目源码 文件源码 阅读 14 收藏 0 点赞 0 评论 0
def delete_by_email_type( cls, email, type ):
    # delete all verify tokens for a given email and type (cleanup)
        entities = cls.fetch_keys_by_email_type(email, type)
        if entities:
            ndb.delete_multi(entities)
handlers.py 文件源码 项目:naziscore 作者: rbanffy 项目源码 文件源码 阅读 17 收藏 0 点赞 0 评论 0
def get(self):
        # Example (use with care, and only locally):
        # ndb.delete_multi(
        #     Score.query(
        #         Score.languages == 'pt').fetch(keys_only=True, limit=5000))
        self.response.out.write('OK\n')
tasks.py 文件源码 项目:flow-dashboard 作者: onejgordon 项目源码 文件源码 阅读 15 收藏 0 点赞 0 评论 0
def get(self):
        from models import Report
        cutoff = datetime.now() - timedelta(days=30)
        old_reports = Report.query().filter(Report.dt_created < cutoff).fetch(limit=None)
        n = 0
        if old_reports:
            for report in old_reports:
                try:
                    report.clean_delete(self_delete=False)
                except Exception, e:
                    logging.info(str(e))
            n = len(old_reports)
            ndb.delete_multi([dr.key for dr in old_reports])
        logging.debug("Deleted %d old reports" % n)
base_factory.py 文件源码 项目:gae_test 作者: huijari 项目源码 文件源码 阅读 18 收藏 0 点赞 0 评论 0
def create_batch(cls, size, **kwargs):
        """Firstly deletes all entries from datastore and then
         creates batch of new entries"""
        ndb.delete_multi(cls._meta.model.query().fetch(keys_only=True))
        super(BaseFactory, cls).create_batch(size, **kwargs)
dal.py 文件源码 项目:StuffShare 作者: StuffShare 项目源码 文件源码 阅读 20 收藏 0 点赞 0 评论 0
def delete(self, tablename, query):
        """
        This function was changed on 2010-05-04 because according to
        http://code.google.com/p/googleappengine/issues/detail?id=3119
        GAE no longer supports deleting more than 1000 records.
        """
        # self.db['_lastsql'] = self._delete(tablename, query)
        (items, tablename, fields) = self.select_raw(query)
        # items can be one item or a query
        if not isinstance(items, list):
            #use a keys_only query to ensure that this runs as a datastore
            # small operations
            leftitems = items.fetch(1000, keys_only=True)
            counter = 0
            while len(leftitems):
                counter += len(leftitems)
                if self.use_ndb:
                    ndb.delete_multi(leftitems)
                else:
                    gae.delete(leftitems)
                leftitems = items.fetch(1000, keys_only=True)
        else:
            counter = len(items)
            if self.use_ndb:
                ndb.delete_multi([item.key for item in items])
            else:
                gae.delete(items)
        return counter


问题


面经


文章

微信
公众号

扫码关注公众号