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)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值