Exemplo n.º 1
0
def cdata_post_trans(device, raw_data, head=None, old_head=None):
    '''
    log_stamp ( 以 Stamp 结尾的请求)
    raw_data 请求的原始数据
    head 头信息字典
    old_head 包含Stamp name 的头数据
    '''
    from conv_att import commit_log

    cursor = conn.cursor()  #---数据库操作对象
    okc = 0
    #----成功的行数
    errorLines = []  #---发生保存错误的记录
    cacheLines = []  #---本次提交的行集合
    errorLogs = []  #---解析出错、不正确数据的行
    sqls = []
    commitLineCount = 700  #达到700行就提交一次
    if settings.DATABASE_ENGINE == "sqlserver_ado": commitLineCount = 50
    alog = None  #---成功的首行信息
    for line in raw_data.splitlines():  #--- 原始数据分行解析
        if line:
            eMsg = ""
            try:
                if head['Z'] == '0':
                    log = line_to_log(device, line, False)
                else:
                    log = line_to_log(device, line)  #---解析考勤数据
            except Exception, e:  #行数据解析错误
                eMsg = u"%(mg)s" % {"mg": e.message}
                import traceback
                traceback.print_exc()
                print eMsg
                log = None
            if log:  #---解析成功
                sqls.append(log)
                cacheLines.append(line)  #先记住还没有提交数据,commit不成功的话可以知道哪些数据没有提交成功
                if len(cacheLines) >= commitLineCount:  #达到一定的行就提交一次
                    try:
                        commit_log(cursor, sqls, conn)  #---提交日志处理
                        okc += len(cacheLines)
                        if not alog:
                            alog = cacheLines[0]
                    except IntegrityError:
                        errorLines += cacheLines  #----错误的行
                    except Exception, e:
                        print_exc()
                        conn.close()
                        cursor = conn.cursor()
                        errorLines += cacheLines
                    cacheLines = []  #----执行一次后恢复初始状态
                    sqls = []
            else:  #----解析失败
                if not head['Z'] == '0':
                    errorLogs.append("%s\t--%s" %
                                     (line, eMsg and eMsg or "Invalid Data"))
Exemplo n.º 2
0
def cdata_post_trans(device, raw_data, head=None,old_head=None):
    '''
    log_stamp ( 以 Stamp 结尾的请求)
    raw_data 请求的原始数据
    head 头信息字典
    old_head 包含Stamp name 的头数据
    '''
    from conv_att import commit_log
    
    cursor = conn.cursor()  #---数据库操作对象
    okc = 0;    #----成功的行数
    errorLines = [] #---发生保存错误的记录
    cacheLines = [] #---本次提交的行集合
    errorLogs = []  #---解析出错、不正确数据的行
    sqls = []
    commitLineCount = 700 #达到700行就提交一次
    if settings.DATABASE_ENGINE == "sqlserver_ado": commitLineCount = 50
    alog = None #---成功的首行信息
    for line in raw_data.splitlines():  #--- 原始数据分行解析
        if line:
            eMsg = ""
            try:
                if head['Z']=='0':
                    log = line_to_log(device, line,False)
                else:
                    log = line_to_log(device, line) #---解析考勤数据
            except Exception, e:  #行数据解析错误
                eMsg = u"%(mg)s" % {"mg":e.message}
                import traceback; traceback.print_exc();
                print eMsg
                log = None
            if log: #---解析成功
                sqls.append(log)
                cacheLines.append(line) #先记住还没有提交数据,commit不成功的话可以知道哪些数据没有提交成功
                if len(cacheLines) >= commitLineCount: #达到一定的行就提交一次
                    try:
                        commit_log(cursor, sqls, conn)  #---提交日志处理
                        okc += len(cacheLines)
                        if not alog:
                            alog = cacheLines[0]
                    except IntegrityError:
                        errorLines += cacheLines    #----错误的行
                    except Exception, e:
                        print_exc()
                        conn.close()
                        cursor = conn.cursor()
                        errorLines += cacheLines
                    cacheLines = [] #----执行一次后恢复初始状态
                    sqls = []
            else:   #----解析失败
                if not head['Z']=='0':
                    errorLogs.append("%s\t--%s" % (line, eMsg and eMsg or "Invalid Data"))
Exemplo n.º 3
0
                        errorLines += cacheLines  #----错误的行
                    except Exception, e:
                        import traceback
                        traceback.print_exc()
                        conn.close()
                        cursor = conn.cursor()
                        errorLines += cacheLines
                    cacheLines = []  #----执行一次后恢复初始状态
                    sqls = []
            else:  #----解析失败
                if not head['Z'] == '0':
                    errorLogs.append("%s\t--%s" %
                                     (line, eMsg and eMsg or "Invalid Data"))
    if cacheLines:  #解析成功的数据  第二次
        try:
            commit_log(cursor, sqls, conn)
            okc += len(cacheLines)
            if not alog:
                alog = cacheLines[0]
        except IntegrityError:
            errorLines += cacheLines
        except Exception, e:
            import traceback
            traceback.print_exc()
            print "try again"
            conn.close()
            cursor = conn.cursor()
            errorLines += cacheLines

    if errorLines:  #(上两步)提交失败的数据
        cacheLines = errorLines
Exemplo n.º 4
0
                            alog = cacheLines[0]
                    except IntegrityError:
                        errorLines += cacheLines    #----错误的行
                    except Exception, e:
                        print_exc()
                        conn.close()
                        cursor = conn.cursor()
                        errorLines += cacheLines
                    cacheLines = [] #----执行一次后恢复初始状态
                    sqls = []
            else:   #----解析失败
                if not head['Z']=='0':
                    errorLogs.append("%s\t--%s" % (line, eMsg and eMsg or "Invalid Data"))
    if cacheLines: #解析成功的数据  第二次
        try:
            commit_log(cursor, sqls, conn)
            okc += len(cacheLines)
            if not alog:
                alog = cacheLines[0]
        except IntegrityError:
            errorLines += cacheLines
        except Exception, e:
            print_exc()
            print "try again"
            conn.close()
            cursor = conn.cursor()
            errorLines += cacheLines

    if errorLines: #(上两步)提交失败的数据
        cacheLines = errorLines
        errorLines = []