#!/usr/bin/env python
# encoding: utf-8 #@author: 东哥加油!
#@file: del_tb_bigtable_statistic.py
#@time: 2018/11/21 15:39 import pymysql
import datetime
import math
import time #获取连接
def get_conn():
conn = None
try:
conn = pymysql.connect(
host="192.168.1.2",
port=3306,
user="root",
passwd="mysqlpassword",
charset="utf8",
)
except Exception as err:
print(err)
return conn #查询语句执行
def get_data(sql):
conn = get_conn()
cur = conn.cursor()
cur.execute(sql)
data = cur.fetchall()
conn.close()
return data #93天前的时间戳
# 2018-07-24 00:00:00 转成毫秒时间戳
def get_pdate_begin(xday):
now_time = datetime.datetime.now()
step_time = datetime.timedelta(days=xday)
yes_time = now_time - step_time
pdate = yes_time.strftime('%Y%m%d')
print(pdate)
return pdate #数据备份,放到tb_bigtable_statistic_hist表中
def data_bak(xday):
print("开始时间:",time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()))
conn = get_conn()
cur = conn.cursor()
cidlist = data_zk(xday)
if cidlist == 0:
print('当天无数据')
else:
for cids in cidlist:
try:
sql = '''insert into db_order.tb_bigtable_statistic_hist \
select * from db_order.tb_bigtable_statistic \
where cid in( %s )''' % cids
cur.execute(sql)
conn.commit() except:
print('备份失败!!!')
conn.rollback()
conn.close()
exit(99)
conn.close()
print("结束时间:", time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())) #组装cid成in的条件(....),5000个cid为一组
def data_zk(xday):
conn = get_conn()
cur = conn.cursor()
cid = get_cid(xday)
var1 = "-999"
i = 0
list = []
if cid.__len__() > 0:
for one in cid:
var1=var1+","+str(one[0])
i=i+1
if(i==2000):
list.append(var1)
var1 = "-999"
i=0
list.append(var1)
return list
else:
return 0 #获取该条件所有的cid
def get_cid(xday):
pdate = get_pdate_begin(xday)
sql = '''SELECT cid
FROM db_order.tb_bigtable_statistic
WHERE pdate = %s limit 20000''' % (pdate)
cid = get_data(sql)
return cid #删除数据
def del_data(xday):
print("删除开始时间:", time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()))
conn = get_conn()
cur = conn.cursor()
cidlist = data_zk(xday)
if cidlist == 0:
print('当天无数据')
else:
for cids in cidlist:
try:
sql = '''delete from db_order.tb_bigtable_statistic \
where cid in( %s )''' % cids
cur.execute(sql)
conn.commit() except:
print('备份失败!!!')
conn.rollback()
conn.close()
exit(99)
conn.close()
print("删除结束时间:", time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())) def move_data(xday):
data_bak(xday)
del_data(xday) if __name__ == '__main__':
move_data(93)

  

python 删除大表数据的更多相关文章

  1. 分批次删除大表数据的shell脚本

    #!/bin/bash # 分别是主机名,端口,用户,密码,数据库,表名称,字段名称 readonly HOST="XXX" readonly PORT=" readon ...

  2. db2快速删除大表数据(亲测可用)

    一.推荐.删了不可恢复 TRUNCATE TABLE table_name IMMEDIATE 二. DB2 LOAD FROM d:\DB2_BAK\null.del of del REPLACE ...

  3. 【MySQL】删除大表的讨论【转】

    转自http://tech.ddvip.com/2013-07/1373269453198566.html 微博上讨论MySQL在删除大表engine=innodb(30G+)时,如何减少MySQL ...

  4. mysql删除大表更快的drop table办法

    mysql删除大表更快的drop table办法 参考资料:https://blog.csdn.net/anzhen0429/article/details/76284320 利用硬链接和trunca ...

  5. MySQL 硬链接删除大表

    在清理整个大表时,我们推荐使用drop,而非delete.但是如果表实在太大,即使是drop,也需要消耗一定的时间.这时可以利用linux的硬连接来快速删除大表,操作过程如下:有一个大表test,共有 ...

  6. 工作随笔——mysql子查询删除原表数据

    最近在开发的时候遇到一个mysql的子查询删除原表数据的问题.在网上也看了很多方法,基本也是然并卵(不是写的太乱就是效率太慢). 公司DBA给了一个很好的解决方案,让人耳目一新. DELETE fb. ...

  7. MYSQL中delete删除多表数据

    MYSQL中delete删除多表数据 DELETE删除多表数据,怎样才能同时删除多个关联表的数据呢?这里做了深入的解释: 1. delete from t1 where 条件 2.delete t1 ...

  8. MySQL 存储过程删除大表

    1.权限问题 alter routine 编辑或删除存储过程 create routine 建立存储过程 execute 创建存储过程 2.存储过程相关的一些命令 show procedure sta ...

  9. sqlserver快速删除整个表数据

    --删除整个表数据 SET STATISTICS TIME ON; DECLARE @Timer DATETIME = GETDATE(); TRUNCATE TABLE LOG_DEBUG_ERRO ...

随机推荐

  1. UIWebView 使用

    UIWebView是iOS sdk中一个最常用的控件.是内置的浏览器控件,我们可以用它来浏览网页.打开文档等等.这篇文章我将使用这个控件,做一个简易的浏览器.如下图: 我们创建一个Window-bas ...

  2. 用EnumMap代替序数索引

    用EnumMap代替序数索引   有时候,会见到利用ordinal方法来索引数组的代码.例如下面这个简化的类,表示一种烹饪用的香草: public class Herb { public enum T ...

  3. extern用法详解(转)

    1 基本解释 extern可以置于变量或者函数前,以标示变量或者函数的定义在别的文件中,提示编译器遇到此变量和函数时在其他模块中寻找其定义. 另外,extern也可用来进行链接指定. 2 问题:ext ...

  4. DBUtils C3P0 阿里巴巴德鲁伊连接池工具的下载

  5. 51 Nod 1640 天气晴朗的魔法( Kruskall )

    #include <bits/stdc++.h> typedef long long LL; using namespace std; ; struct node{ LL u,v,w; n ...

  6. [题解](树形dp/换根)小x游世界树

    2. 小x游世界树 (yggdrasi.pas/c/cpp) [问题描述] 小x得到了一个(不可靠的)小道消息,传说中的神岛阿瓦隆在格陵兰海的某处,据说那里埋藏着亚瑟王的宝藏,这引起了小x的好奇,但当 ...

  7. JS异常捕获和抛出

    try...catch 用来异常捕获(主要适用于IE5以上内核的浏览器,也是最常用的异常捕获方式) 使用onerror时间捕获异常,这种捕获方式是比较古老的一中方式,目前一些主流的浏览器暂不支持这种 ...

  8. flask_context

    定义全局的钩子函数 有的时候在处理请求之前和之后,执行某些特定的代码是很有用的,这就用到了请求钩子 例如在请求之前创建数据库连接或者redis连接:或者是系统里面用户请求处理之前先验证用户的身份,是否 ...

  9. 反射和__setattr__,__delattr__,__getattr__用法

    反射 什么是反射:反射的概念是由Smith在1982年首次提出的,主要是指程序可以访问.检测和修改它本身状态或行为的一种能力(自省).这一概念的提出很快引发了计算机科学领域关于应用反射性的研究.它首先 ...

  10. getpass不起作用

    #! /usr/bin/env python# -*- coding:utf-8 -*- # login 模块中登录时输入密码,想用getPass模块实现密码的不回显操作.#如下: import ge ...