python类put_multi()的实例源码

__init__.py 文件源码 项目:sndlatr 作者: Schibum 项目源码 文件源码 阅读 21 收藏 0 点赞 0 评论 0
def init_zoneinfo():
    """
    Add each zone info to the datastore. This will overwrite existing zones.

    This must be called before the AppengineTimezoneLoader will work.
    """
    import os, logging
    from zipfile import ZipFile
    zoneobjs = []

    zoneinfo_path = os.path.abspath(os.path.join(os.path.dirname(__file__),
      'zoneinfo.zip'))

    with ZipFile(zoneinfo_path) as zf:
        for zfi in zf.filelist:
            key = ndb.Key('Zoneinfo', zfi.filename, namespace=NDB_NAMESPACE)
            zobj = Zoneinfo(key=key, data=zf.read(zfi))
            zoneobjs.append(zobj)

    logging.info("Adding %d timezones to the pytz-appengine database" %
        len(zoneobjs)
        )

    ndb.put_multi(zoneobjs)
subscription.py 文件源码 项目:beans 作者: Yelp 项目源码 文件源码 阅读 32 收藏 0 点赞 0 评论 0
def store_specs_from_subscription(subscription_key, week_start, specs):
    """
    Idempotent function to store meeting specs for this week.
    """
    try:
        current_specs = MeetingSpec.query(
            MeetingSpec.meeting_subscription == subscription_key,
            MeetingSpec.datetime > week_start
        ).fetch()
    except NeedIndexError:
        current_specs = []

    if current_specs:
        return

    ndb.put_multi(specs)
    return specs
incrementaccountswithtask.py 文件源码 项目:appenginetaskutils 作者: emlynoregan 项目源码 文件源码 阅读 21 收藏 0 点赞 0 评论 0
def IncrementAccountsWithTaskExperiment():
    def Go():
        def AddFreeCredit(creditamount):
            @task
            def ProcessOnePage(cursor):
                accounts, cursor, kontinue = Account.query().fetch_page(
                    100, start_cursor = cursor
                )
                for account in accounts:
                    account.balance += creditamount
                ndb.put_multi(accounts)
                if kontinue:
                    ProcessOnePage(cursor)
            ProcessOnePage(None)
        AddFreeCredit(10)
    return "Increment Accounts With Task", Go
makeaccounts.py 文件源码 项目:appenginetaskutils 作者: emlynoregan 项目源码 文件源码 阅读 21 收藏 0 点赞 0 评论 0
def MakeAccountsExperiment():
    def Go():
        @task(includeheaders=True, logname="MakeAccountsExperiment")
        def MakeAccounts(numaccounts, headers):
            logging.debug(headers)
            logging.debug(numaccounts)
            if numaccounts <= 10:
                accounts = []
                for _ in range(numaccounts):
                    account = Account()
                    account.balance = 0
                    accounts.append(account)
                ndb.put_multi(accounts)
            else:
                doaccounts = numaccounts
                while doaccounts > 0:
                    batch = (numaccounts / 10) if ((numaccounts / 10) <= doaccounts) else doaccounts
                    MakeAccounts(batch)
                    doaccounts -= batch

        MakeAccounts(1000)
    return "Make Accounts", Go
__init__.py 文件源码 项目:start 作者: argeweb 项目源码 文件源码 阅读 21 收藏 0 点赞 0 评论 0
def init_zoneinfo():
    """
    Add each zone info to the datastore. This will overwrite existing zones.

    This must be called before the AppengineTimezoneLoader will work.
    """
    import os
    import logging
    from zipfile import ZipFile
    zoneobjs = []

    zoneinfo_path = os.path.abspath(
        os.path.join(os.path.dirname(__file__), 'zoneinfo.zip'))

    with ZipFile(zoneinfo_path) as zf:
        for zfi in zf.filelist:
            key = ndb.Key('Zoneinfo', zfi.filename, namespace=NDB_NAMESPACE)
            zobj = Zoneinfo(key=key, data=zf.read(zfi))
            zoneobjs.append(zobj)

    logging.info(
        "Adding %d timezones to the pytz-appengine database" %
        len(zoneobjs))

    ndb.put_multi(zoneobjs)
main.py 文件源码 项目:appbackendapi 作者: codesdk 项目源码 文件源码 阅读 18 收藏 0 点赞 0 评论 0
def post(self):
        # Force ndb to use v1 of the model by re-loading it.
        reload(models_v1)

        # Save some example data.
        ndb.put_multi([
            models_v1.Picture(author='Alice', name='Sunset'),
            models_v1.Picture(author='Bob', name='Sunrise')
        ])

        self.response.write("""
        Entities created. <a href="/">View entities</a>.
        """)
# [END add_entities]


# [START update_schema]
datastore_test.py 文件源码 项目:appbackendapi 作者: codesdk 项目源码 文件源码 阅读 21 收藏 0 点赞 0 评论 0
def testEventuallyConsistentGlobalQueryResult(self):
        class TestModel(ndb.Model):
            pass

        user_key = ndb.Key('User', 'ryan')

        # Put two entities
        ndb.put_multi([
            TestModel(parent=user_key),
            TestModel(parent=user_key)
        ])

        # Global query doesn't see the data.
        self.assertEqual(0, TestModel.query().count(3))
        # Ancestor query does see the data.
        self.assertEqual(2, TestModel.query(ancestor=user_key).count(3))
# [END HRD_example_1]

    # [START HRD_example_2]
__init__.py 文件源码 项目:cloud-memory 作者: onejgordon 项目源码 文件源码 阅读 26 收藏 0 点赞 0 评论 0
def init_zoneinfo():
    """
    Add each zone info to the datastore. This will overwrite existing zones.

    This must be called before the AppengineTimezoneLoader will work.
    """
    import os
    import logging
    from zipfile import ZipFile
    zoneobjs = []

    zoneinfo_path = os.path.abspath(
        os.path.join(os.path.dirname(__file__), 'zoneinfo.zip'))

    with ZipFile(zoneinfo_path) as zf:
        for zfi in zf.filelist:
            key = ndb.Key('Zoneinfo', zfi.filename, namespace=NDB_NAMESPACE)
            zobj = Zoneinfo(key=key, data=zf.read(zfi))
            zoneobjs.append(zobj)

    logging.info(
        "Adding %d timezones to the pytz-appengine database" %
        len(zoneobjs))

    ndb.put_multi(zoneobjs)
modelforum.py 文件源码 项目:enkiWS 作者: juliettef 项目源码 文件源码 阅读 26 收藏 0 点赞 0 评论 0
def create_forums( cls ):
        # create an executable string from the forums settings to add the forums
        expression_forum = '''enki.modelforum.EnkiModelForum( group_order = {group_order}, forum_order = {forum_order}, group = "{group}", title = "{title}", description = "{description}" ), '''
        expression = "ndb.put_multi([ "
        increment = 10
        group_order = 0
        forum_order = 0
        current_group = ''
        for index, item in enumerate( settings.FORUMS ):
            if item[ 0 ] != current_group:
            # new group: increment the group order index and reset the forum order index
                current_group = item[ 0 ]
                group_order += increment
                forum_order = increment
            else:
                forum_order += increment
            expression += expression_forum.format( group_order = group_order, forum_order = forum_order, group = current_group, title = item[ 1 ], description = item[ 2 ] )
        expression += " ])"
        exec( expression )
adminActions.py 文件源码 项目:flow-dashboard 作者: onejgordon 项目源码 文件源码 阅读 20 收藏 0 点赞 0 评论 0
def get(self, d):
        # Run after admin user logs in
        u = User.query().get()
        if u:
            today = datetime.today()
            g = Goal.CreateMonthly(u, date=today)
            g.Update(text=["Get it done"])
            g2 = Goal.Create(u, str(today.year))
            g2.Update(text=["Make progress"])
            ndb.put_multi([g, g2])
            h = Habit.Create(u)
            h.Update(name="Run")
            h.put()
            p = Project.Create(u)
            p.Update(title="Blog post", subhead="How Flow works")
            p.put()

            Task.Create(u, "Get this done").put()

            t = Task.Create(u, "Think hard", due=datetime.today())
            t2 = Task.Create(u, "Think even harder", due=datetime.today())
            message = "OK"
        else:
            message = "No user"
        self.json_out({'message': message})
tasks.py 文件源码 项目:flow-dashboard 作者: onejgordon 项目源码 文件源码 阅读 30 收藏 0 点赞 0 评论 0
def get(self):
        from services import pocket, goodreads
        logging.debug("Running SyncReadables cron...")
        TS_KEY = 'pocket_last_timestamp'
        users = User.SyncActive(['pocket', 'goodreads'])
        user_put = []
        for user in users:
            # Pocket
            user_changes = False
            access_token = user.get_integration_prop('pocket_access_token')
            if access_token:
                success, readables, latest_timestamp = pocket.sync(user, access_token)
                logging.debug("Got %d readables from pocket" % len(readables))
                user.set_integration_prop(TS_KEY, latest_timestamp)
                user_changes = True
            success, readables = goodreads.get_books_on_shelf(user, shelf='currently-reading')
            logging.debug("Got %d readables from good reads" % len(readables))
            if user_changes:
                user_put.append(user)
        ndb.put_multi(user_put)
models.py 文件源码 项目:flow-dashboard 作者: onejgordon 项目源码 文件源码 阅读 20 收藏 0 点赞 0 评论 0
def CreateFromText(user, text):
        people = re.findall(r'@([a-zA-Z]{3,30})', text)
        hashtags = re.findall(r'#([a-zA-Z]{3,30})', text)
        new_jts = []
        all_jts = []
        people_ids = [JournalTag.Key(user, p) for p in people]
        hashtag_ids = [JournalTag.Key(user, ht, prefix='#') for ht in hashtags]
        existing_tags = ndb.get_multi(people_ids + hashtag_ids)
        for existing_tag, key in zip(existing_tags, people_ids + hashtag_ids):
            if not existing_tag:
                prefix = key.id()[0]
                type = JOURNALTAG.HASHTAG if prefix == '#' else JOURNALTAG.PERSON
                jt = JournalTag(id=key.id(), name=key.id()[1:], type=type, parent=user.key)
                new_jts.append(jt)
                all_jts.append(jt)
            else:
                all_jts.append(existing_tag)
        ndb.put_multi(new_jts)
        return all_jts
user.py 文件源码 项目:electron-crash-reporter 作者: lipis 项目源码 文件源码 阅读 29 收藏 0 点赞 0 评论 0
def merge_user_dbs(user_db, deprecated_keys):
  # TODO: Merge possible user data before handling deprecated users
  deprecated_dbs = ndb.get_multi(deprecated_keys)
  for deprecated_db in deprecated_dbs:
    deprecated_db.auth_ids = []
    deprecated_db.active = False
    deprecated_db.verified = False
    if not deprecated_db.username.startswith('_'):
      deprecated_db.username = '_%s' % deprecated_db.username
  ndb.put_multi(deprecated_dbs)
user.py 文件源码 项目:meet-notes 作者: lipis 项目源码 文件源码 阅读 24 收藏 0 点赞 0 评论 0
def merge_user_dbs(user_db, deprecated_keys):
  # TODO: Merge possible user data before handling deprecated users
  deprecated_dbs = ndb.get_multi(deprecated_keys)
  for deprecated_db in deprecated_dbs:
    deprecated_db.auth_ids = []
    deprecated_db.active = False
    deprecated_db.verified = False
    if not deprecated_db.username.startswith('_'):
      deprecated_db.username = '_%s' % deprecated_db.username
  ndb.put_multi(deprecated_dbs)
user.py 文件源码 项目:vote4code 作者: welovecoding 项目源码 文件源码 阅读 31 收藏 0 点赞 0 评论 0
def merge_user_dbs(user_db, deprecated_keys):
  # TODO: Merge possible user data before handling deprecated users
  deprecated_dbs = ndb.get_multi(deprecated_keys)
  for deprecated_db in deprecated_dbs:
    deprecated_db.auth_ids = []
    deprecated_db.active = False
    deprecated_db.verified = False
    if not deprecated_db.username.startswith('_'):
      deprecated_db.username = '_%s' % deprecated_db.username
  ndb.put_multi(deprecated_dbs)
user.py 文件源码 项目:beans 作者: Yelp 项目源码 文件源码 阅读 24 收藏 0 点赞 0 评论 0
def create_new_employees_from_list(new_employees):
    user_list = []
    for new_employee in new_employees:
        user = User(
            email=new_employee['email'],
            first_name=new_employee['first_name'],
            last_name=new_employee['last_name'],
            photo_url=new_employee['photo_url'],
            metadata=new_employee['metadata'],
            subscription_preferences=[],
        )
        user_list.append(user)
    ndb.put_multi(user_list)
user.py 文件源码 项目:beans 作者: Yelp 项目源码 文件源码 阅读 29 收藏 0 点赞 0 评论 0
def update_current_employees(local_data_employee, remote_data_employee):
    users = set(local_data_employee.keys())
    for user in users:
        local_employee = local_data_employee[user]
        remote_employee = remote_data_employee[user]

        local_employee.first_name = remote_employee['first_name']
        local_employee.last_name = remote_employee['last_name']
        local_employee.photo_url = remote_employee['photo_url']
        local_employee.metadata = remote_employee['metadata']
        local_employee.terminated = False

    ndb.put_multi(local_data_employee.values())
user.py 文件源码 项目:beans 作者: Yelp 项目源码 文件源码 阅读 31 收藏 0 点赞 0 评论 0
def mark_termed_employees(termed_employees):
    for employee in termed_employees:
        employee.terminated = True

    ndb.put_multi(termed_employees)
incrementaccountsnaive.py 文件源码 项目:appenginetaskutils 作者: emlynoregan 项目源码 文件源码 阅读 24 收藏 0 点赞 0 评论 0
def IncrementAccountsExperimentNaive():
    def Go():
        def AddFreeCredit(creditamount):
            def ProcessOnePage(cursor):
                accounts, cursor, kontinue = Account.query().fetch_page(
                    100, start_cursor = cursor
                )
                for account in accounts:
                    account.balance += creditamount
                ndb.put_multi(accounts)
                if kontinue:
                    ProcessOnePage(cursor)
            ProcessOnePage(None)
        AddFreeCredit(10)
    return "Increment Accounts (Naive)", Go
snippets.py 文件源码 项目:appbackendapi 作者: codesdk 项目源码 文件源码 阅读 25 收藏 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)
main_test.py 文件源码 项目:appbackendapi 作者: codesdk 项目源码 文件源码 阅读 27 收藏 0 点赞 0 评论 0
def test_data():
    from main import Note
    ancestor_key = ndb.Key(Note, '123')
    notes = [
        Note(parent=ancestor_key, message='1'),
        Note(parent=ancestor_key, message='2')
    ]
    ndb.put_multi(notes)
    yield
event_updates.py 文件源码 项目:dancedeets-monorepo 作者: mikelambert 项目源码 文件源码 阅读 20 收藏 0 点赞 0 评论 0
def resave_display_events(db_events):
    display_events = [search.DisplayEvent.build(x) for x in db_events]
    ndb.put_multi([x for x in display_events if x])
event_updates.py 文件源码 项目:dancedeets-monorepo 作者: mikelambert 项目源码 文件源码 阅读 23 收藏 0 点赞 0 评论 0
def _save_events(db_events, disable_updates=None):
    objects_to_put = list(db_events)
    objects_to_put += [search.DisplayEvent.build(x) for x in db_events]
    # Because some DisplayEvent.build() calls return None (from errors, or from inability)
    objects_to_put = [x for x in objects_to_put if x]
    ndb.put_multi(objects_to_put)
    if 'index' not in (disable_updates or []):
        search.update_fulltext_search_index_batch(db_events)
load_backup_locally.py 文件源码 项目:dancedeets-monorepo 作者: mikelambert 项目源码 文件源码 阅读 18 收藏 0 点赞 0 评论 0
def run():
    # Set your downloaded folder's path here (must be readable by dev_appserver)
    mypath = '/Users/lambert/Dropbox/dancedeets/data/datastore_backup_datastore_backup_2016_11_19_DBEvent/15700286559371541387849311E815D'
    # Se the class of the objects here
    cls = DBEvent
    # Set your app's name here
    appname = "dev~None"

    # Do the harlem shake
    onlyfiles = [f for f in listdir(mypath) if isfile(join(mypath, f))]

    for file in onlyfiles:
        i = 0
        try:
            raw = open(mypath + "/" + file, 'r')
            reader = records.RecordsReader(raw)
            to_put = list()
            for record in reader:
                entity_proto = entity_pb.EntityProto(contents=record)
                entity_proto.key_.app_ = appname
                obj = cls._from_pb(entity_proto)

                to_put.append(obj)
                i += 1
                if i % 100 == 0:
                    print "Saved %d %ss" % (i, '')  #entity.kind())
                    ndb.put_multi(to_put)  # use_memcache=False)
                    to_put = list()

            ndb.put_multi(to_put)  # use_memcache=False)
            to_put = list()
            print "Saved %d" % i

        except ProtocolBufferDecodeError:
            """ All good """
context.py 文件源码 项目:Deploy_XXNET_Server 作者: jzp820927 项目源码 文件源码 阅读 22 收藏 0 点赞 0 评论 0
def _flush_ndb_puts(self, items, options):
    """Flush all NDB puts to datastore."""
    assert ndb is not None
    ndb.put_multi(items, config=self._create_config(options))
tasks.py 文件源码 项目:flow-dashboard 作者: onejgordon 项目源码 文件源码 阅读 28 收藏 0 点赞 0 评论 0
def get(self):
        from services.github import GithubClient
        last_date = self.request.get('date')
        if last_date:
            last_date = tools.fromISODate(last_date)
        else:
            last_date = (datetime.today() - timedelta(days=1))
        users = User.SyncActive('github')
        res = {}
        td_put = []
        for user in users:
            gh_client = GithubClient(user)
            if gh_client._can_run():
                date_range = [(last_date - timedelta(days=x)).date() for x in range(self.GH_COMMIT_OVERLAP)]
                logging.debug("Running SyncGithub cron for %s on %s..." % (user, date_range))
                commits_dict = gh_client.get_contributions_on_date_range(date_range)
                if commits_dict is not None:
                    for date, n_commits in commits_dict.items():
                        td = TrackingDay.Create(user, date)
                        td.set_properties({
                            'commits': n_commits
                        })
                        td_put.append(td)
            else:
                logging.debug("Github updater can't run")
        if td_put:
            ndb.put_multi(td_put)
        self.json_out(res)
api.py 文件源码 项目:flow-dashboard 作者: onejgordon 项目源码 文件源码 阅读 21 收藏 0 点赞 0 评论 0
def action(self, d):
        '''
        '''
        action = self.request.get('action')
        res = {}
        if action == 'create_common':
            common_tasks = self.user.get_setting_prop(['tasks', 'common_tasks'])
            if common_tasks:
                task_put = []
                for ct in common_tasks:
                    title = ct.get('title')
                    if title:
                        task_put.append(Task.Create(self.user, title))
                if task_put:
                    ndb.put_multi(task_put)
                    self.message = "Created %d task(s)" % len(task_put)
                    res['tasks'] = [t.json() for t in task_put]
                    self.success = True
            else:
                self.message = "You haven't configured any common tasks"

        elif action == 'archive_complete':
            recent = Task.Recent(self.user, limit=20)
            to_archive = []
            for t in recent:
                if not t.archived and t.is_done():
                    t.archive()
                    to_archive.append(t)
            if to_archive:
                ndb.put_multi(to_archive)
                res['archived_ids'] = [t.key.id() for t in to_archive]
                self.message = "Archived %d %s" % (len(to_archive), tools.pluralize('task', count=len(to_archive)))
            else:
                self.message = "No completed tasks to archive"
            self.success = True
        else:
            self.message = "Unknown action"
        self.set_response(res)
api.py 文件源码 项目:flow-dashboard 作者: onejgordon 项目源码 文件源码 阅读 28 收藏 0 点赞 0 评论 0
def batch_create(self, d):
        readings = json.loads(self.request.get('readings'))
        source = self.request.get('source', default_value='form')
        dbp = []
        for r in readings:
            type_string = r.get('type')
            if type_string:
                r['type'] = READABLE.LOOKUP.get(type_string.lower())
            r = Readable.CreateOrUpdate(self.user, None, source=source, read=True, **r)
            dbp.append(r)
        if dbp:
            ndb.put_multi(dbp)
            self.success = True
            self.message = "Putting %d" % len(dbp)
        self.set_response()
api.py 文件源码 项目:flow-dashboard 作者: onejgordon 项目源码 文件源码 阅读 27 收藏 0 点赞 0 评论 0
def batch_create(self, d):
        quotes = json.loads(self.request.get('quotes'))
        dbp = []
        for q in quotes:
            if 'dt_added' in q and isinstance(q['dt_added'], basestring):
                q['dt_added'] = tools.fromISODate(q['dt_added'])
            q = Quote.Create(self.user, **q)
            dbp.append(q)
        if dbp:
            ndb.put_multi(dbp)
            self.success = True
            self.message = "Putting %d" % len(dbp)
        self.set_response()
api.py 文件源码 项目:flow-dashboard 作者: onejgordon 项目源码 文件源码 阅读 23 收藏 0 点赞 0 评论 0
def submit(self, d):
        '''
        Submit today's journal (yesterday if 00:00 - 04:00)
        '''
        date = None
        _date = self.request.get('date')
        if _date:
            date = tools.fromISODate(_date)
        task_json = tools.getJson(self.request.get('tasks'))  # JSON
        params = tools.gets(self,
            strings=['lat', 'lon', 'tags_from_text'],
            json=['data'],
            lists=['tags']
        )
        jrnl = None
        if params.get('data'):
            if not params.get('tags'):
                params['tags'] = []
            jrnl = MiniJournal.Create(self.user, date)
            jrnl.Update(**params)
            jrnl.parse_tags()
            jrnl.put()

            if task_json:
                # Save new tasks for tomorrow
                tasks = []
                for t in task_json:
                    if t:
                        task = Task.Create(self.user, t)
                        tasks.append(task)
                ndb.put_multi(tasks)
            self.success = True
            self.message = "Journal submitted!"
        else:
            self.message = "Malformed request - data param required"
        self.set_response({
            'journal': jrnl.json() if jrnl else None
        })


问题


面经


文章

微信
公众号

扫码关注公众号