ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

python脚本导数据-2-csv

2022-08-08 21:30:55  阅读:461  来源: 互联网

标签:脚本 None no python waybill self db user csv


需求:

工作日常中会有很多这样的情况,产品人员会提OA要求dba导数据(导出的数据放表格文件中),有时数据量要达到几千万,假如是人工导,要导好多次,时间消耗比较多。所以决定写脚本来导。

 

#!/usr/bin/python
import MySQLdb
import sys,os
import time
import datetime
import codecs
import csv

ip = 'xxx.xxx.xxx.xxx'
user = 'xxxx'
password = 'xxxxx'


class SQLgo():
def __init__(self, ip=None, user=None, password=None , db=None):
#def __init__(self, ip=None, user=None, password=None , db=None, socket=None):
self.ip = ip
self.user = user
self.db = db
# self.socket = socket
self.password=password
self.conn = MySQLdb.connect(
host=self.ip,
user=self.user,
passwd=self.password,
db=self.db,
charset='utf8mb4',
# unix_socket=self.socket

)

def __exit__(self, exc_type, exc_val, exc_tb):
self.con.close()
def data_to_csv(self,sql,st,en):
t = datetime.datetime.now()
file=t.strftime('取应收中转费用为空的数据_'+'%Y_%m_%d_%H_%M_%S')+'-'+st+'_'+ en +".csv"
tmp_file_name = '/data2/zt/zt2/0108/csv/cx/20220715/'+file
try:
with codecs.open(filename=tmp_file_name, mode='w', encoding='utf-8-sig') as f:
write = csv.writer(f, dialect='excel')
cursor=self.conn.cursor()
cursor.execute(sql)
results = cursor.fetchall()
result2 = []
stra = ''
for i in cursor.description:
result2.append(i[0])
write.writerow(result2)
for i in results:
dd = []
for j in i:
dd.append(str(j))
write.writerow(dd)
return tmp_file_name,file
except Exception as e:
print(e)
db=sys.argv[1]


#s = SQLgo(ip,user,password,db)
zs = 1000000
st = 0
en = 1000000

for limit_num in range(1,13):
s = SQLgo(ip,user,password,db)
sqll = "SELECT t.waybill_no,t.fee_cost ,t.update_time FROM yl_jms_spmi_transfer_bill_pt t LEFT JOIN tof_data_comparison p ON t.waybill_no = p.waybill_no WHERE t.is_delete = 1 AND t.waybill_no = p.waybill_no and t.fee_type_id = 158 AND t.fee_cost > 0 AND t.bill_generation_date >= '2022-01-01' order by t.waybill_no limit %s,%s" %(str(st),str(zs))
sqll = "SELECT p.send_network_name 寄件网点,p.waybill_no 运单编号,p.send_financial_center_name 寄件财务中心,p.start_financial_center_name 始发财务中心,p.package_charge_weight 计费重量,p.destination_name 目的地市,p.waybill_operation_time 运单录入时间,t.sign_network_name FROM yl_jms_spmi_transfer_bill_pt p LEFT JOIN yl_jms_spmi_piece_bill_pt t on p.waybill_no = t.waybill_no WHERE p.bill_generation_date BETWEEN '2022-03-01' AND '2022-03-31' AND p.fee_type_id = 168 AND p.is_delete = 1 AND p.waybill_no not in (SELECT waybill_no from yl_jms_spmi_transfer_bill_pt where bill_generation_date BETWEEN '2022-01-01' AND '2022-06-30' AND fee_type_id = 158 AND is_delete = 1 ) and t.fee_type_id = 201 order by p.waybill_no limit %s,%s" %(str(st),str(zs))
s.data_to_csv(sqll,str(st),str(en))
st = st + zs
en = en + zs

 

用法:

python3 脚本名 库名

 

标签:脚本,None,no,python,waybill,self,db,user,csv
来源: https://www.cnblogs.com/hmysql/p/16563520.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有