有一段时间,没更新,但这都不是自己懒惰的借口,希望自己能坚持下去;

python可以操作MySQL 数据库,需要安装的是MySQL-python,并且实现读入excel表及生成excel 表,则需要xlrd及xlwt这两个python 模块;

1、安装MySQL-python:

  yum -y install MySQL-python    #########在python 程序导入模块时名字为MySQLdb

2、安装excel两个模块:

  pip install xlrd xlwt   ####pip 默认使用的是国外的镜像,网速较慢,可以更换为国内的镜像,临时则使用 -i https://pypi.douban.com/simple/

3、以下代码中其它的模块均为内置模块;

4、导入excel的模板内容如下:

  第一行所有列有数据,第二行部分列有数据

1 #!/usr/bin/env python
  2 #coding:utf-8
  3 import MySQLdb,sys,xlwt,subprocess,datetime,xlrd,time
  4 reload(sys) #######以下两行解决了写excel 时中文字符的问题
  5 sys.setdefaultencoding('utf-8')
  6 class Mysql_Select(object):
  7     def __init__(self):
  8         pass
  9
 10     def yes_Format(self):
 11         child = subprocess.Popen("date +'%Y-%m-%d %H:%M:%S' -d '-1 days'",shell=True,stdout=subprocess.PIPE)
 12         yes_time = child.stdout.read()
 13         return yes_time ############返回前一天的日期,供Mysql 语句使用
 14
 15     def mysql_Connect_Status(self,date_yesterday):
 16         conn = MySQLdb.connect(user='',passwd='',host='',charset='utf8')
 17         cur = conn.cursor()
18          machines_status = cur.fetchmany(cur.execute("select bdass.salesOrder.orderNum,bdass.salesOrder.salesTime,bdas    s.machines.name,bdass.salesOrder.goodsCode,bdass.salesOrder.salesPrice from bdass.salesOrder,bdass.machines where bda    ss.salesOrder.salesTime > '%s' and bdass.salesOrder.machineId = bdass.machines.clientId "%date_yesterday))
 19         cur.close()
 20         conn.close()
 21         return machines_status #############查询生产服务器的Mysql的表
 22
 23     def excel_Read(self,machines_status):
 24         W=xlwt.Workbook('utf8') #########创建一个excel写对象
 25         ws = W.add_sheet('Sheet1') #########增加一个sheet
 26         ws.col(0).width = 9999 ##########表格的列属性
 27         ws.col(1).width = 6666
 28         ws.col(20).width = 6666
 29         ws.col(43).width = 6666
 30         ws.col(44).width = 6666
 31         ws.col(45).width = 6666
 32         ws.col(65).width = 9999
 33         ws.col(103).width = 6666
 34         ws.col(104).width = 6666
 35         module_data = xlrd.open_workbook('sales_module.xls') #######创建一个excel读对象
  36       table = module_data.sheet_by_index(0) #########读取第一个sheet
 37         ncols = table.ncols #########表的所有列
 38         for raws in xrange(len(machines_status)): ############## 写模板里的固定值;
 39             for values in xrange(ncols):
 40                 if values not  in [0,1,20,43,44,45,53,54,55,56,57,59,65,103,104]:
 41                     ws.write(raws+1,values,label=table.cell(1,values).value)
 42
 43         for values in xrange(ncols):  ##############写模板的第一行
 44             ws.write(0,values,label=table.cell(0,values).value)
 45
 46         for raw in xrange(len(machines_status)): ###########写订单的数据;
 47             ws.write(raw+1,0,label=machines_status[raw][0])  #订单号
 48             ws.write(raw+1,1,label=str(machines_status[raw][1]).split(' ')[0])  #订单日期
 49             ws.write(raw+1,20,label=machines_status[raw][2])    #表头备注
 50             ws.write(raw+1,43,label=str(machines_status[raw][1]).split(' ')[0]) #表头预发货日期
 51             ws.write(raw+1,44,label=str(machines_status[raw][1]).split(' ')[0]) #表头预完工日期
 52             ws.write(raw+1,45,label=str(machines_status[raw][3]))   #存货编码
 53             ws.write(raw+1,53,label=str(machines_status[raw][4]))   #报价
54              ws.write(raw+1,53,label=str(machines_status[raw][4]))   #报价
 54             ws.write(raw+1,54,label=str(machines_status[raw][4]))   #含税单价
 55             ws.write(raw+1,55,label=str(machines_status[raw][4] - round(machines_status[raw][4]/1.17*0.17,2)))  #金额
    _原币_无税
 56             ws.write(raw+1,56,label=str('%.2f' %(machines_status[raw][4]/1.17*0.17)))   #税额
 57             ws.write(raw+1,57,label=str(machines_status[raw][4]))   #价税合计
 58             ws.write(raw+1,59,label=str(machines_status[raw][4] - round(machines_status[raw][4]/1.17*0.17,2)))  #无税
    _单价
 59             ws.write(raw+1,65,label=str(machines_status[raw][0]))   #备注
 60             ws.write(raw+1,103,label=str(machines_status[raw][1]).split(' ')[0])    #预完工日期
 61             ws.write(raw+1,104,label=str(machines_status[raw][1]).split(' ')[0])    #预发货日期
 62
 63         W.save('模板生成.xls') ########最后保存并命名
 64
 65
 66     def copy_Remote(self): #####传送到远程服务器
 67         child = subprocess.Popen("scp -P 7777 模板生成.xls server_net:/share/技术/",shell=True,stdout=subprocess.PIPE    )
 68
 69 system = Mysql_Select()
70 if __name__ == '__main__':
 71     yes_time = system.yes_Format()
 72     machines_status = system.mysql_Connect_Status(yes_time)
 73     system.excel_Read(machines_status)
 74     system.copy_Remote()

最后代码完成并生成的excel表如下:

代码部分,还有待优化,加油;


python操作MySQL--实例的更多相关文章

  1. Python操作Mysql实例代码教程在线版(查询手册)

    本文介绍了Python操作MYSQL.执行SQL语句.获取结果集.遍历结果集.取得某个字段.获取表字段名.将图片插入数据库.执行事务等各种代码实例和详细介绍,代码居多,是一桌丰盛唯美的代码大餐   实 ...

  2. Python操作Mysql实例代码教程在线版(查询手册)_python

    实例1.取得MYSQL的版本 在windows环境下安装mysql模块用于python开发 MySQL-python Windows下EXE安装文件下载 复制代码 代码如下: # -*- coding ...

  3. python操作mysql实例

    #coding=utf-8 import MySQLdb # 打开数据库连接 db = MySQLdb.connect(host='localhost',user='root',passwd='',d ...

  4. python操作mysql数据库的相关操作实例

    python操作mysql数据库的相关操作实例 # -*- coding: utf-8 -*- #python operate mysql database import MySQLdb #数据库名称 ...

  5. python操作mysql数据库增删改查的dbutils实例

    python操作mysql数据库增删改查的dbutils实例 # 数据库配置文件 # cat gconf.py #encoding=utf-8 import json # json里面的字典不能用单引 ...

  6. Python操作MySQL数据库9个实用实例

    用python连接mysql的时候,需要用的安装版本,源码版本容易有错误提示.下边是打包了32与64版本. MySQL-python-1.2.3.win32-py2.7.exe MySQL-pytho ...

  7. Python 操作 MYSQL

    本文介绍了 Python 操作 MYSQL.执行 SQL 语句.获取结果集.遍历结果集.取得某个字 段.获取表字段名.将图片插入数据库.执行事务等各种代码实例和详细介绍,代码居多, 是一桌丰盛唯美的代 ...

  8. Python开发【第十一篇】:Python操作MySQL

    本篇对于Python操作MySQL主要使用两种方式: 1.原生模块pymsql. 2.ORM框架SQLAchemy. pymsql pymsql是Python中操作MySQL的模块,其使用方法和MyS ...

  9. Python操作MySQL案例

    最近都在学习Python代码,希望学会Python后,能给我带来更高的工作效率,所以每天坚持学习和拷代码,下面是一个Python操作MySQL的一个实例,该实例可以让更多的人更好了解MySQLdb模块 ...

  10. python连接mysql实例分享_python

    示例一 #coding=UTF-8 import sys import MySQLdb import time reload(sys) sys.setdefaultencoding('utf-8') ...

随机推荐

  1. Log4j未平,Logback 又起!再爆漏洞?

    前段时间 Log4j接连爆漏洞的事儿相比把大家都折腾的不轻,很多开发都被连夜叫起来修复漏洞.这几天终于平复一些了. 可是,昨晚,忽然看到技术群和朋友圈,有人开始聊Logback 又爆漏洞了. 这是什么 ...

  2. 【LeetCode】54. Spiral Matrix 解题报告(Python)

    作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 维护四个边界和运动方向 保存已经走过的位置 日期 题 ...

  3. 【LeetCode】705. Design HashSet 解题报告(Python)

    作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 位图法 数组法 日期 题目地址:https://le ...

  4. BZOJ 1857: [Scoi2010]传送带(三分套三分)

    Time Limit: 1 Sec Memory Limit: 64 MB Submit: 2549 Solved: 1370 [Submit][Status][Discuss] Descriptio ...

  5. MySQL中视图的定义、原理--触发器

    视图概述 视图是一个虚拟表,其内容由查询定义.同真实的表一样,视图包含一系列带有名称的列和行数据.但是,视图并不在数据库中以存储的数据值集形式存在.行和列数据来自由定义视图的查询所引用的表,并且在引用 ...

  6. Bristol大学密码学博士生的五十二个知识点

    Bristol大学密码学博士生的五十二个知识点 这个系列,是Bristol大学的密码安全工作组为密码学和信息安全相关的博士准备了52个基本知识点. 原地址:http://bristolcrypto.b ...

  7. 第二十七个知识点:什么是对称密码加密的AEAD安全定义?

    第二十七个知识点:什么是对称密码加密的AEAD安全定义? AEAD 在之前的博客里,Luke描述了一种被广泛使用的操作模式(ECB,CBC和CTR)对块密码.我们也可能会想我们加密方案的完整性,完整性 ...

  8. 【Linux】Linux安装JDK

    1.下载linux版本的JDK1.8 链接:JDK下载链接 提取码:fxn4 链接:Xshell下载链接 提取码:439l 2.使用Xshell连接虚拟机,上传文件 在 /usr目录下创建一个新文件夹 ...

  9. 计算机网络-4-11-IP多播

    IP多播 IP多播的基本概念 与单播相比,在一对多的通信中,多播可以大大减少网络资源.在互联网上进行多播就叫做IP多播,IP多播所传送的分组需要使用多播IP地址.能够运行多播协议的路由器叫做多播路由器 ...

  10. Tool_Fiddler安装和使用

    一.简介 Fiddler(中文名称:小提琴)是一个HTTP的调试代理,以代理服务器的方式,监听系统的Http网络数据流动, Fiddler可以也可以让你检查所有的HTTP通讯,设置断点,以及Fiddl ...