使用python3实现mysql导出数据到文件的脚本如下:
import pymysql
import time
host = ''
port =3306
user =''
passwd =''
db =''
sql = 'select ACCEPT_NO,BSS_ACT_CODE,USER_NO,ACC_NBR,PROD_CODE,PROD_NAME,COMBO_FEE,PROMISE_TIME,
PRE_PAY_FEE,FUSE_TYPE,CUST_TYPE,GROUP_CUST_CODE,SUB_MC,TARGET_MARKET ,TERMINAL_MODEL,TERMINAL_TAC,
TERMINAL_NUM,REQUEST_TIME,MECHANISM_CODE,JOB_NUMBER,CHANNEL_CODE,PROVINCE_NO,CITY_NO,AREA_NO,PARA_ENTITY,
ORDER_TIME,GRANT_FEE,USER_TYPE,USER_VAL,file_name,unix_timestamp(input_date)from rc_read_pack_act_t'
text_name = 'ORDER_0020_' + str(time.strftime("%Y%m%d%H%M%S")) + '_0001.txt'
#这个地方需要关注的是mysql倒出时间格式的数据需要进行转换成时间戳操作 --time.strftime("%Y%m%d%H%M%S")
class SelectMySQL():
def __init__(self):
self.host = host
self.port = port
self.user = user
self.passwd = passwd
self.db = db
def select_data(self,sql):
conn = pymysql.connect(host=self.host, port=self.port, user=self.user, passwd=self.passwd, db=self.db)
cursor =conn.cursor()
global effect_row
effect_row = cursor.execute(sql)#查询出表中共有多少条满足条件的数据
text_name = 'ORDER_0020_' + str(time.strftime("%Y%m%d %H:%M:%S")) + '_0001.txt' #文件名称
result = cursor.fetchall()#取出所有数据(result是个元组)
new_result = list(result)#转换成列表 --这步有点多余,也可以不转
x = time.localtime()
for t_new_result in new_result:#t_new_result是一个大的列表,循环里面的小元组
tt_new_reslut = list(t_new_result)#转成列表
tt_new_reslut[-1] = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime(tt_new_reslut[-1]))#元素修改,把在上面提到的时间戳格式化#修改列表里的元素
with open('ORDER_0020_'+ str(time.strftime("%Y%m%d%H%M%S"))+'_0001.txt', 'a+', encoding='utf-8') as f:
f.write(str(tt_new_reslut).lstrip('[').rstrip(']').replace(",", "||").replace('\'', '') + '\n')#针对客户提出的文件格式进行修改
if __name__ == '__main__':
s = SelectMySQL()
s.select_data(sql)
print("\033[41;1m导出完成 共有%s条数据导出,请在当前文件夹下查看%s\033[0m" % (effect_row,text_name))