-
Notifications
You must be signed in to change notification settings - Fork 1
/
fix-defaultid_dash.py
52 lines (37 loc) · 1.48 KB
/
fix-defaultid_dash.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
import re
import os
import yaml
import hashlib
import logging
import pymongo
import argparse
import requests
from dateutil.parser import parse as parser_date
from urllib.parse import quote
from pprint import pprint
from sys import exit
class FixDefaultIdSlash():
def __init__(self):
logging.basicConfig(
level=logging.INFO,
filename= 'pipeline.log',
datefmt='%Y-%m-%d %H:%M:%S',
format='%(asctime)s %(levelname)-8s %(message)s')
self.logger = logging.getLogger('pipeline')
name_yml = os.path.abspath('./config.yml')
with open(name_yml, 'r') as ymlfile:
self.cfg = yaml.load(ymlfile,Loader=yaml.BaseLoader)
self.client = pymongo.MongoClient('mongodb://{0}:{1}@{2}/{3}'.format(
quote(self.cfg['auth'][self.cfg['env']]['mongo-user']),
quote(self.cfg['auth'][self.cfg['env']]['mongo-pass']),
self.cfg['auth'][self.cfg['env']]['mongo-host'],
self.cfg['auth'][self.cfg['env']]['mongo-db'])
)
self.db = self.client[self.cfg['auth'][self.cfg['env']]['mongo-db']]
def process(self):
rows = self.db['dimension_all'].find({},{'meta.defaultid' : 1})
for row in rows:
defaultid = row['meta']['defaultid'].replace("-","_")
self.db['dimension_all'].update_one({"_id" : row['_id'] }, {'$set' : {'meta.defaultid' : defaultid } })
if __name__ == '__main__':
FixDefaultIdSlash().process()