本文实例讲述了python实现将MySQL数据库表中的数据导出生成csv格式文件的方法。分享给大家供大家参考,具体如下: #!/usr/bin/env python

# -*- coding:utf-8 -*-

"""

Purpose: 生成日汇总对账文件

Created: 2015/4/27

Modified:2015/5/1

@author: guoyJoe

"""

#导入模块

import MySQLdb

import time

import datetime

import os

#日期

today = datetime.date.today()

yestoday = today - datetime.timedelta(days=1)

#对账日期

checkAcc_date = yestoday.strftime('%Y%m%d')

#对账文件目录

fileDir = "/u02/filesvrd/report"

#SQL语句

sqlStr1 = 'SELECT distinct pay_custid FROM dbpay.tb_pay_bill WHERE date_acct = %s'

#总笔数|成功交易笔数|成功交易金额|退货笔数|退货金额|撤销笔数|撤销金额

sqlStr2="""SELECT totalNum,succeedNum,succeedAmt,returnNum,returnAmt,revokeNum,revokeAmt

FROM

(SELECT count(order_id) AS totalNum

FROM (SELECT p.order_id as order_id

FROM dbpay.tb_pay_bill p, dbpay.tb_paybillserial q

WHERE p.oid_billno = q.oid_billno

AND p.paycust_accttype = 2

AND p.Paycust_Type = 1

AND p.stat_bill in (0, 4)

AND q.pay_stat = 1

AND q.col_stat = 1

AND p.pay_custid = %s

AND q.date_acct = %s

UNION ALL

SELECT p.order_id as order_id

FROM dbpay.tb_pay_bill p, dbpay.tb_paybillserial q

WHERE p.oid_billno = q.oid_billno

AND p.col_accttype = 2

AND p.col_type = 1

AND p.stat_bill in (0, 4)

AND q.pay_stat = 1

AND q.col_stat = 1

AND p.col_custid = %s

AND q.date_acct = %s

UNION ALL

SELECT R.ORDER_ID AS ORDER_ID

FROM DBPAY.TB_REFUND_BILL R, DBPAY.TB_PAYBILLSERIAL Q

WHERE R.oid_refundno = Q.OID_BILLNO

AND R.ORI_COL_ACCTTYPE = 2

AND R.ORI_COL_TYPE = 1

AND R.STAT_BILL = 2

AND Q.PAY_STAT = 1

AND Q.COL_STAT = 1

AND R.ORI_COL_CUSTID = %s

AND Q.DATE_ACCT = %s ) as total) A,

(SELECT count(order_id) succeedNum ,sum(amt_paybill) succeedAmt

FROM (SELECT p.order_id as order_id,

q.amt_payserial/1000 as amt_paybill

FROM dbpay.tb_pay_bill p, dbpay.tb_paybillserial q

WHERE p.oid_billno = q.oid_billno

AND p.paycust_accttype = 2

AND p.Paycust_Type = 1

AND p.stat_bill = '0'

AND q.pay_stat = 1

AND q.col_stat = 1

AND p.pay_custid = %s

AND q.date_acct = %s

UNION ALL

SELECT p.order_id as order_id,

q.amt_payserial/1000 as amt_paybill

FROM dbpay.tb_pay_bill p, dbpay.tb_paybillserial q

WHERE p.oid_billno = q.oid_billno

AND p.col_accttype = 2

AND p.col_type = 1

AND p.stat_bill = '0'

AND q.pay_stat = 1

AND q.col_stat = 1

AND p.col_custid = %s

AND q.date_acct = %s ) as succeed) B,

(SELECT count(order_id) returnNum, sum(amt_paybill) returnAmt

FROM (SELECT R.ORDER_ID AS ORDER_ID,

Q.AMT_PAYSERIAL/1000 AS AMT_PAYBILL

FROM DBPAY.TB_REFUND_BILL R, DBPAY.TB_PAYBILLSERIAL Q

WHERE R.oid_refundno = Q.OID_BILLNO

AND R.ORI_COL_ACCTTYPE = 2

AND R.ORI_COL_TYPE = 1

AND R.STAT_BILL = 2

AND Q.PAY_STAT = 1

AND Q.COL_STAT = 1

AND R.ORI_COL_CUSTID = %s

AND Q.DATE_ACCT = %s ) as retur) C,

(SELECT count(order_id) revokeNum,sum(amt_paybill) revokeAmt

FROM (SELECT p.order_id as order_id,

q.amt_payserial/1000 as amt_paybill

FROM dbpay.tb_pay_bill p, dbpay.tb_paybillserial q

WHERE p.oid_billno = q.oid_billno

AND p.paycust_accttype = 2

AND p.Paycust_Type = 1

AND p.stat_bill = '4'

AND q.pay_stat = 1

AND q.col_stat = 1

AND p.pay_custid = %s

AND q.date_acct = %s

UNION ALL

SELECT p.order_id as order_id,

q.amt_payserial/1000 as amt_paybill

FROM dbpay.tb_pay_bill p, dbpay.tb_paybillserial q

WHERE p.oid_billno = q.oid_billno

AND p.col_accttype = 2

AND p.col_type = 1

AND p.stat_bill = '4'

AND q.pay_stat = 1

AND q.col_stat = 1

AND p.col_custid = %s

AND q.date_acct = %s) as revok) D"""

try:

#连接MySQL数据库

connDB= MySQLdb.connect("192.168.1.6","root","root","test" )

connDB.select_db('test')

curSql1 = connDB.cursor()

#查询商户

curSql1.execute(sqlStr1,checkAcc_date)

payCustID = curSql1.fetchall()

if len(payCustID) < 1:

print ('No found checkbill data,Please check the data for %s!' %checkAcc_date)

exit(1)

for row in payCustID:

custid = row[0]

#创建汇总日账单文件名称

fileName = '%s/JYMXSUM_%s_%s.csv' %(fileDir,custid,checkAcc_date)

#判断文件是否存在, 如果存在则删除文件,否则生成文件!

if os.path.exists(fileName):

os.remove(fileName)

print 'The file start generating! %s' %time.strftime('%Y-%m-%d %H:%M:%S')

print '%s' %fileName

#打开游标

curSql2= connDB.cursor()

#执行SQL

checkAcc_date = yestoday.strftime('%Y%m%d')

curSql2.execute(sqlStr2,(custid,checkAcc_date,custid,checkAcc_date,custid,checkAcc_date,custid,checkAcc_date,c

ustid,checkAcc_date,custid,checkAcc_date,custid,checkAcc_date,custid,checkAcc_date))

#获取数据

datesumpay = curSql2.fetchall()

#打开文件

outfile = open(fileName,'w')

for sumpay in datesumpay:

totalNum = sumpay[0]

succeedNum = sumpay[1]

succeedAmt= sumpay[2]

returnNum = sumpay[3]

returnAmt = sumpay[4]

revokeNum = sumpay[5]

revokeAmt = sumpay[6]

#生成汇总日账单文件

outfile.write('%s|%s|%s|%s|%s|%s|%s\n' %(totalNum,succeedNum,succeedAmt,returnNum,returnAmt,revokeNum,revo

keAmt))

outfile.flush()

curSql2.close()

curSql1.close()

connDB.close()

print 'The file has been generated! %s' %time.strftime('%Y-%m-%d %H:%M:%S')

except MySQLdb.Error,err_msg:

print "MySQL error msg:",err_msg

更多关于Python相关内容感兴趣的读者可查看本站专题:《Python常见数据库操作技巧汇总》、《Python数学运算技巧总结》、《Python数据结构与算法教程》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》、《Python入门与进阶经典教程》及《Python文件与目录操作技巧汇总》

希望本文所述对大家Python程序设计有所帮助。

python亿级mysql数据库导出_Python实现将MySQL数据库表中的数据导出生成csv格式文件的方法...相关推荐

  1. java 导出csv 格式,java导出csv格式文件的方法

    这篇文章主要为大家详细介绍了java导出csv格式文件的方法,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 导出csv格式文件的本质是导出以逗号为分隔的文本数据 imp ...

  2. 如何将表中的数据导出到电子表格中

    如何将表中的数据导出到电子表格中                     有很多方法都可将数据库中某个表的数据导出到电子表格中,例如通过创建Access.Application,可以利用Access本 ...

  3. hive表中的数据导出

    将hive表中的数据导出到其他任意目录,例如linux本地磁盘,例如hdfs,例如mysql等等 一.insert导出 将查询的结果导出到本地 insert overwrite local direc ...

  4. hive表中的数据导出:表数据的导出7种方式

    将hive表中的数据导出到其他任意目录,例如linux本地磁盘,例如hdfs,例如mysql等等 insert导出 1)将查询的结果导出到本地 :第一种 insert overwrite local ...

  5. python处理文本文件实现生成指定格式文件的方法

    python处理文本文件实现生成指定格式文件的方法 关于python处理文本文件实现生成指定格式文件,很多朋友都不知道该怎么弄. 下面是具体代码,希望对大家有帮助 可以在下面复制: import os ...

  6. mysql杠杆加号什么意思_对tb_book表中的数据,按ID序号进行升序排列,查询语句是什么?_学小易找答案...

    [单选题]修改数据库表结构用以下哪一项 ( ) [单选题]对于一个微小物理量,通常采用将其进行放大的方法实现测量,以下哪个不是物理实验方法? [单选题]扭摆实验中,为了测出金属匀质细杆绕质心对称轴的转 ...

  7. Laravel 将数据表中的数据导出,并生成seed文件

    在 laravel 开发过程中,我们为了将自己本地数据库中的数据导出给别人用有两种方法:最普通的也就是将自己的数据库用命令行或者图形操作工具导出成 .sql 的文件给对方使用 ,另外一种就是 lara ...

  8. java csv 单元格格式_java导出csv格式文件的方法

    本文实例为大家分享了java导出csv格式文件的具体代码,供大家参考,具体内容如下 导出csv格式文件的本质是导出以逗号为分隔的文本数据 import java.io.BufferedWriter; ...

  9. 将sql server表中的数据导出为inert into语句的形式

    今天工作中需要用到一个中国的省市地区表,正好家里的机器中的sql server中有一个地区表.开始想直接用数据导入导出的方式把数据倒到单位的工作机器上.试了好几次都失败,没找到原因.于是想到把家里的地 ...

最新文章

  1. Jenkins plugin
  2. Java基础班学习笔记(15)GUI图形界面编程
  3. CryptoAPI与openssl数字签名与验证交互
  4. Python判断一个字符串是否包含某个指定的字符串
  5. 使用FastHttpApi构建多人Web聊天室
  6. php个推设置指定用户收到推送消息,请问怎么给指定用户推送信息
  7. 《零基础》MySQL 安装(二)
  8. 编写python代码估算sin(x)的值
  9. python读写磁盘扇区数据_[Win32] 直接读写磁盘扇区(磁盘绝对读写)
  10. Atitit 部署了个webdav服务 as root 目录 1.1. WEB-INF copy to root dir only a web.xml use... 1 1.2. Java.ba
  11. Linux安装GCC方法—简洁版
  12. 【资源分享】分享十个历史版本的eclipse安装包
  13. 程序员5种编程入门方法,快速学会一门编程语言!
  14. RK3399 上电待机,按power按键开机
  15. win8.1 更新后出现致命错误C0000034,无法进入安全模式和高级选项
  16. 基于C语言的个人所得税计税系统
  17. java如何创建一个文本框_如何创建绑定到对象的文本框
  18. VUE中数组赋值push与=的区别
  19. 鲍尔默退休:Wintel帝国走向崩溃还是重构?
  20. 了解操作系统,什么是操作系统Operation System?

热门文章

  1. mfc的WM_PAINT笔记
  2. 如何创建脱机数据库应用程序思路
  3. checkbox全选和反选功能
  4. LeetCode--20. 有效的括号(栈,删除法)
  5. OpenCV图像、矩阵、数组介绍
  6. html 自动跳转到不同页面,html跳转到同一个页面的不同位置_html/css_WEB-ITnose
  7. PTA21、K好数 (10 分)
  8. 大班科学计算机的发明应用教案,大班科学教案:机器人探密
  9. mysql 张三的语文成绩_八道 经典的 MYSQL 面试题目(有答案)
  10. c++ 对象数组_ArrayList实现分析(一)——对象创建