sql中中文乱码

# -*- coding: utf-8 -*-
#!/usr/bin/python
#
#         FILE: monitor.py
#
#        USAGE: ---
#
#  DESCRIPTION:
#               markit 外部数据资料数据(reference data)预计早上9:00左右接入;监控,系统配置表写入
#      OPTIONS: ---
# REQUIREMENTS: ---
#         BUGS: ---
#        NOTES: ---
#       AUTHOR: zl
#      COMPANY: CCDC
#      VERSION: 1.0
#      CREATED: 2020.09.21
#     REVISION: 0.1
#     REVISION: ---
#    SRC_TABLE: ---
#    TGT_TABLE: ---
import cx_Oracle
from xml.dom.minidom import parse
import xml.dom.minidom
import datetime
from core.dataoracle import *
import sys
from conf.config import *
import time
from core.getconfig import get_config
import pandas as pd
import numpy as np
import paramiko
from core.downfile import *
import os
import logging
from core.dataoracle import SQL
from urllib.parse import quote
#from markit.parse.dataoracle import OracleConnect
from conf import settings # 导入自定义的logging配置
import re
settings.load_my_logging_cfg()  # 在你程序文件的入口加载自定义logging配置
logger = logging.getLogger(__name__)  # 生成logger实例
os.environ[\'NLS_LANG\']=\'SIMPLIFIED CHINESE_CHINA.AL32UTF8\'
class alarm:
    def __init__(self,con_str):
        self.__con_str = con_str
        self.__oracle_connect = OracleConnect(con_str)
        self.__tosql = SQL()
    def data_hitory(self,file_byte,time_start,task_id,file,table_name,file_count,success_count,fail_count,status):
        \'\'\'
        # 写入配置表信息dcs_collect_batch
        :param file_byte: 文件大小
        :param time_start: 开始时间
        :param task_id: 任务id
        :param file: 文件名
        :param table_name: 表名
        :param file_count: 数据条数
        :return:
        \'\'\'
        time_end = time.time()
        collect_number = round((time_end - time_start), 3)
        dic_batch = {}
        for i, key in enumerate([\'task_type\', \'task_id\', \'collect_user\', \'collect_time\', \'collect_long\', \
                                 \'parse_long\', \'file_byte\', \'file_count\', \'success_count\', \'fail_count\', \'status\',
                                 \'create_time\', \'file_url\']):
            dic_batch[i] = key
        hi_dic = dic_batch
        # file_count = len(df_new.index)
        # success_count = file_count
        # status = 1
        parse_number = int(time.time()) - collect_number
        hitory = pd.DataFrame([\'FILE\', int(task_id), \'system\',
                               pd.to_datetime(time.strftime("%Y%m%d %H%M%S", time.localtime()),
                                              format=("%Y%m%d %H%M%S")), \
                               collect_number, parse_number, file_byte, file_count, success_count, fail_count, status,
                               pd.to_datetime(time.strftime("%Y%m%d %H%M%S", time.localtime()),
                                              format=("%Y%m%d %H%M%S")), table_name]).T
        hitory = hitory.rename(columns=hi_dic)
        self.__tosql.tooracle(\'dcs_collect_batch\', hitory)
    def data_hitory_no(self, task_id, table_name, status_msg):
        time_end = time.time()
        collect_number = 0
        dic_batch = {}
        for i, key in enumerate([\'task_type\', \'task_id\', \'collect_user\', \'collect_time\', \'collect_long\', \
                                 \'parse_long\', \'file_byte\', \'file_count\', \'success_count\', \'fail_count\', \'status\',
                                 \'create_time\',
                                 \'file_url\', \'status_msg\']):
            dic_batch[i] = key
        hi_dic = dic_batch
        success_count = 0
        file_count = 0
        status = 0
        # status_msg = \'没有新的接入文件,请联系相关人员进行处理!\'
        parse_number = int(time.time()) - collect_number
        hitory = pd.DataFrame([\'FILE\', int(task_id), \'system\',
                               pd.to_datetime(time.strftime("%Y%m%d %H%M%S", time.localtime()),
                                              format=("%Y%m%d %H%M%S")), \
                               collect_number, parse_number, 0, file_count, success_count, 0, status,
                               pd.to_datetime(time.strftime("%Y%m%d %H%M%S", time.localtime()),
                                              format=("%Y%m%d %H%M%S")), table_name, status_msg]).T
        hitory = hitory.rename(columns=hi_dic)
        self.__tosql.tooracle(\'dcs_collect_batch\', hitory)
    def file_record(self, batch_id, localpath, remoteDir, dcs_flag, file_time):
        \'\'\'
        写入配置表信息:dcs_file_record
        :param batch_id: 批次号 取自dcs_collect_batch的dcs_id
        :param remoteDir: 下载到路径
        :return:
        \'\'\'
        cur_dir = remoteDir.split(\'/\')[0]
        day = datetime.datetime.now().strftime("%Y%m%d")
        sftp = get_config(\'sftp\')
        host = sftp[\'hostdata\'][\'ip\']
        # path = os.path.join(cur_dir, day)
        path = remoteDir
        # file_name = localpath.split(\'/\')[2]
        file_name = localpath.split(\'/\')[-1]
        # file_time = day
        # dcs_flag = 1
        create_time = pd.to_datetime(time.strftime("%Y%m%d %H%M%S", time.localtime()), format=("%Y%m%d %H%M%S"))
        dic_record = {}
        for i, key in enumerate([\'batch_id\', \'host\', \'path\', \'file_name\', \'file_time\', \'dcs_flag\', \'create_time\']):
            dic_record[i] = key
        record_dic = dic_record
        record_hitory = pd.DataFrame([batch_id, host, path, file_name, file_time, dcs_flag, create_time]).T
        record_hitory = record_hitory.rename(columns=record_dic)
        self.__tosql.tooracle(\'dcs_file_record\', record_hitory)
    def no_file_record(self, task, localpath, remoteDir):
        \'\'\'
        :param task:
        :param localpath:
        :param remoteDir:
        :param file_time: 文件时间
        :return:
        \'\'\'
        for i in task:
            task_id = task[i]
            status_msg = \'没有新的接入文件,请联系相关人员进行处理!\'
            #status_msg = status_msg.encode("GBK")
            #status_msg = quote(status_msg,safe=string.printable)
            j = i.lower()
            table = \'dcs_reserved_markit_\' + j
            #self.data_hitory_no(task_id, \'dcs_reserved_markit_\' + i, status_msg)
            self.data_hitory_no(task_id, \'dcs_reserved_markit_\' + i, status_msg)
            # sql_batch_id = "select max(dcs_id) from dcs_collect_batch a where a.task_type=\'FILE\'  and a.file_url=\'{0}\'".format(
            #     table)
            # res = self.__oracle_connect.fetchall(sql_batch_id)
            # batch_id = int(res[0][0])
            # self.file_record(batch_id, localpath, remoteDir, 0, file_time)

    def repeat_data(self, task, localpath, remoteDir, file_time):
        \'\'\'
        :param task:
        :param localpath:
        :param remoteDir:
        :param file_time: 文件时间
        :return:
        \'\'\'
        for i in task:
            print(\'############repeat_data\')
            task_id = task[i]
            j = i.lower()
            table = \'dcs_reserved_markit_\' + j
            sql_batch_id = "select max(dcs_id) from dcs_collect_batch a where a.task_type=\'FILE\'  and a.file_url=\'{0}\'".format(
                table)
            res = self.__oracle_connect.fetchall(sql_batch_id)
            print(\'sql_batch_id\',sql_batch_id)
            batch_id = int(res[0][0])
            self.file_record(batch_id, localpath, remoteDir, 0, file_time)

  

#!/bin/bash
export NLS_SIMPLIFIED CHINESE_CHINA.AL32UTF8\'
#source ~/.bash_profile
data_date=`date +%Y%m%d%H%M%S`

sub_dir=$(cd `dirname $0`;pwd)
cd $sub_dir


python delete_mid_table_data.py