forked from googleapis/google-cloud-python
-
Notifications
You must be signed in to change notification settings - Fork 0
/
populate_datastore.py
107 lines (93 loc) · 2.85 KB
/
populate_datastore.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
# Copyright 2014 Google Inc.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
"""Script to populate datastore with system test data."""
from __future__ import print_function
import os
import six
from google.cloud import datastore
ANCESTOR = ('Book', 'GoT')
RICKARD = ANCESTOR + ('Character', 'Rickard')
EDDARD = RICKARD + ('Character', 'Eddard')
KEY_PATHS = (
RICKARD,
EDDARD,
ANCESTOR + ('Character', 'Catelyn'),
EDDARD + ('Character', 'Arya'),
EDDARD + ('Character', 'Sansa'),
EDDARD + ('Character', 'Robb'),
EDDARD + ('Character', 'Bran'),
EDDARD + ('Character', 'Jon Snow'),
)
CHARACTERS = (
{
'name': u'Rickard',
'family': u'Stark',
'appearances': 0,
'alive': False,
}, {
'name': u'Eddard',
'family': u'Stark',
'appearances': 9,
'alive': False,
}, {
'name': u'Catelyn',
'family': [u'Stark', u'Tully'],
'appearances': 26,
'alive': False,
}, {
'name': u'Arya',
'family': u'Stark',
'appearances': 33,
'alive': True,
}, {
'name': u'Sansa',
'family': u'Stark',
'appearances': 31,
'alive': True,
}, {
'name': u'Robb',
'family': u'Stark',
'appearances': 22,
'alive': False,
}, {
'name': u'Bran',
'family': u'Stark',
'appearances': 25,
'alive': True,
}, {
'name': u'Jon Snow',
'family': u'Stark',
'appearances': 32,
'alive': True,
},
)
def print_func(message):
if os.getenv('GOOGLE_CLOUD_NO_PRINT') != 'true':
print(message)
def add_characters(client=None):
if client is None:
# Get a client that uses the test dataset.
client = datastore.Client()
with client.transaction() as xact:
for key_path, character in six.moves.zip(KEY_PATHS, CHARACTERS):
if key_path[-1] != character['name']:
raise ValueError(('Character and key don\'t agree',
key_path, character))
entity = datastore.Entity(key=client.key(*key_path))
entity.update(character)
xact.put(entity)
print_func('Adding Character %s %s' % (character['name'],
character['family']))
if __name__ == '__main__':
add_characters()