-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathmongo_cli.py
More file actions
57 lines (47 loc) · 1.53 KB
/
mongo_cli.py
File metadata and controls
57 lines (47 loc) · 1.53 KB
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
import pymongo, json, pprint, argparse
#Simple script to insert data into mongodb in the correct format using the cli
user = 'jhammer3'
topic = 'topic'
client = pymongo.MongoClient (host="da1.eecs.utk.edu")
db = client ['fdac21mp2']
coll = db[user]
defaultTopic=''
defaultTitle='MP2'
defaultLicense='None'
defaultDescription=''
defaultUrls=[]
requiredVals = { \
'owner': user, \
'topic': defaultTopic, \
'title': defaultTitle, \
'license': defaultLicense, \
'description': defaultDescription, \
'urls': defaultUrls \
}
def checkRecorded():
pp = pprint.PrettyPrinter(indent=1,width=65)
for r in coll.find({'owner': user}):
print(pp.pformat(r))
def insertRow(args):
for key in requiredVals:
if key not in args:
args[key] = requiredVals[key]
coll.insert_one(args)
def main(args):
if len(args.keys()) == 0:
checkRecorded()
else:
insertRow(args)
class ParseKwargs(argparse.Action):
def __call__(self, parser, namespace, values, option_string=None):
setattr(namespace, self.dest, dict())
for value in values:
key, value = value.split('=')
getattr(namespace, self.dest)[key] = value
def cli():
parser = argparse.ArgumentParser()
parser.add_argument(nargs='*', action=ParseKwargs, dest='kwargs')
args = parser.parse_args()
main(vars(args)['kwargs'])
if __name__ == "__main__":
cli()