python3数据统计模版-mysql

#!/Users/zuojingang/python_venv/bin/python3.6
# -*- coding: UTF-8 -*-

import pymysql
import sys
import time
import os
from datetime import timedelta,datetime

#连接数据库
connect = pymysql.connect(host='', port=, user='', password='!', db='', charset='utf8', cursorclass=pymysql.cursors.DictCursor)

#创建游标
_cursor = connect.cursor()

base_dir = '/Users/zuojingang/file/file_user_90/'
print('base_dir=' + base_dir)

result_dir = base_dir + time.strftime('%Y-%m-%d') + '/'
if not os.path.exists(result_dir) or not os.path.isdir(result_dir):
    os.makedirs(result_dir)

file_path = result_dir + 'file_user_90.csv'
if os.path.exists(file_path):
    os.remove(file_path)

class Process:

    file_user_90 = open(file_path, 'a')

    @classmethod
    def init(_cls):
        file_user_90_header = 'c_header1, c_header2\n'
        _cls.file_user_90.write(file_user_90_header)


    @classmethod
    def destory(_cls):
        _cls.file_user_90.close()

    @classmethod
    def toProcess(_cls, part_i):
        '''
        def a method to process the part
        '''
        #执行数据查询
        sql = 'select user_id, remain from table_test order by user_id asc limit {},10000'

        _sql = sql.format(part_i)
        print('sql=' + _sql)

        _cursor.execute(_sql)
        sql_result = _cursor.fetchall()

        result_str = ''
        for _dict in sql_result:
            result_str += _dict.get('user_id') + ',' + str(_dict.get('remain') + '\n'

        print(result_str)
        _cls.file_user_90.write(result_str)


Process.init()

_datetime = now() - timedelta(days=90)
#执行数据查询
sql = 'select count(*) as cnt from table_test where last_modified_time<{}'

_sql = sql.format(_datetime)
print('sql=' + _sql)

_cursor.execute(_sql)
sql_result = _cursor.fetchone()
print(str(sql_result))

# from dateutil.relativedelta import relativedelta

# s_time = datetime.strptime('2015-01-01 00:00:00', '%Y-%m-%d %H:%M:%S')
# for i in range(45):
#     _datetime_s = s_time + relativedelta(months=i)
#     _datetime_e = s_time + relativedelta(months=(i+1))
#     Process.toProcess(_datetime_s, _datetime_e)
for i in range(sql_result[cnt]/10000):
    Process.toProcess(i)

Process.destory()

sys.exit(0)

猜你喜欢

转载自blog.csdn.net/u010746357/article/details/80661992
今日推荐