44import json
55import time
66import os
7+ from datetime import datetime , date
78
89
910class ExportBulk (object ):
@@ -14,18 +15,33 @@ def __init__(self, index_name, type_name, file_name=None):
1415 self ._index = index_name
1516 self ._type = type_name
1617 if file_name is None :
17- file_name = 'bulk_% s.bulk' % time .time ()
18+ file_name = './es_%s_%s_% s.bulk' % ( index_name , type_name , time .time () )
1819 file_path = os .path .dirname (file_name )
1920 if not os .path .isdir (file_path ):
2021 os .mkdir (file_path )
2122 self .bulk_fp = open (file_name , 'a' )
2223
24+ @staticmethod
25+ def __default (obj ):
26+ """
27+ 支持datetime的json encode
28+ TypeError: datetime.datetime(2015, 10, 21, 8, 42, 54) is not JSON serializable
29+ :param obj:
30+ :return:
31+ """
32+ if isinstance (obj , datetime ):
33+ return obj .strftime ('%Y-%m-%d %H:%M:%S' )
34+ elif isinstance (obj , date ):
35+ return obj .strftime ('%Y-%m-%d' )
36+ else :
37+ raise TypeError ('%r is not JSON serializable' % obj )
38+
2339 def write (self , index_id , body ):
2440 """
2541 文件写入
2642 """
2743 self .bulk_fp .write (json .dumps ({"index" : {"_index" : self ._index , '_type' : self ._type , '_id' : index_id }})+ "\n " )
28- self .bulk_fp .write (json .dumps (body )+ "\n " )
44+ self .bulk_fp .write (json .dumps (body , ensure_ascii = False , default = self . __default )+ "\n " )
2945
3046 def close (self ):
3147 """
@@ -38,7 +54,7 @@ class ExportFile(object):
3854 """
3955 导出json/csv文件工具类
4056 """
41- def __init__ (self , file_name ):
57+ def __init__ (self , file_name = None ):
4258 if file_name is None :
4359 file_name = 'json_%s.json' % time .time ()
4460 file_path = os .path .dirname (file_name )
0 commit comments