zoukankan      html  css  js  c++  java
  • mongo2csv

    #!/usr/bin/env python3
    
    import pymongo
    import datetime
    import os
    
    yesterday = str(datetime.date.today() - datetime.timedelta(days=1))
    
    
    def mongo2csv(db_name, ts_string=yesterday, column_handle=None, column_delete=None):
        '''
    
        :param db_name: 表名
        :param ts_string: 日期
        :param column_handle: 需要处理的列,
                            格式{k:v} ,
                            k:需要处理的列,
                            v:1.数字,即列表索引,取列表的第几个元素
                               2.字符串,即字典key,取子字典的某个value
                               3.join ,即需要将列表转为字符串
    
        :param column_delete: 需要删除的列
        :return:
        '''
        print('starting...')
        host = '127.0.0.1'
        port = 5600
        user = 'root'
        password = ''
        url = 'mongodb://' + user + ':' + password + '@' + host + ':' + str(port) + '/'
        client = pymongo.MongoClient(url)
        db = client.rental
        collection = db[db_name]
        select_condition = {'_id': 0, 'ts': 0}
        if not column_delete:
            column_delete = []
        if not column_handle:
            column_handle = {}
        if len(column_delete) > 0:
            for temp in column_delete:
                select_condition[temp] = 0
        title_dic = collection.find_one({'ts_string': ts_string}, select_condition)
        title = sorted(title_dic.keys())
        con = collection.find({'ts_string': ts_string}, select_condition)
        file_name = db_name + '_' + yesterday + '.csv'
        with open(file_name, 'a', encoding='utf8') as f:
            f.write(','.join(title) + '
    ')
            for item in con:
                for k, v in column_handle.items():
                    item[k] = item[k][v] if v != 'join' else (
                        '|'.join([str(x) for x in item[k]]) if isinstance(item[k], list) else item[k])
                f.write(','.join([str(item[x]) for x in title]) + '
    ')
    
    
    if __name__ == '__main__':
         mongo2csv('lianjia_detail')
         mongo2csv('mogu_detail', column_handle={'metroInfo': 0, 'rentType': 'value'})
         mongo2csv('qingke_detail', column_handle={})
         mongo2csv('xiangyu_detail', column_delete=['endDate','vacantStartDate','tabList','vacantEndDate'])
         mongo2csv('ziru_detail', column_handle={'subway_line_code': 'join', 'subway_station_code': 'join'})
         print(os.system('wc -l *.csv'))
    
    
    
     
  • 相关阅读:
    【读书笔记】:MIT线性代数(1):Linear Combinations
    Adam Optimization Algorithm
    CSS 对齐方式
    CSS Position
    设置Table边框的CSS
    p_CreateAuditEntry
    Entity FramWork Code first 使用心得
    CRM 配置 ADFS后,使用自定义STS遇到的问题总结
    Sql Server Always On主库与附库遇到的问题
    ADFS 登录页面自定义
  • 原文地址:https://www.cnblogs.com/wanghzh/p/9436973.html
Copyright © 2011-2022 走看看