python操作MySQL--实例
有一段时间,没更新,但这都不是自己懒惰的借口,希望自己能坚持下去;
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--实例的更多相关文章
- Python操作Mysql实例代码教程在线版(查询手册)
本文介绍了Python操作MYSQL.执行SQL语句.获取结果集.遍历结果集.取得某个字段.获取表字段名.将图片插入数据库.执行事务等各种代码实例和详细介绍,代码居多,是一桌丰盛唯美的代码大餐 实 ...
- Python操作Mysql实例代码教程在线版(查询手册)_python
实例1.取得MYSQL的版本 在windows环境下安装mysql模块用于python开发 MySQL-python Windows下EXE安装文件下载 复制代码 代码如下: # -*- coding ...
- python操作mysql实例
#coding=utf-8 import MySQLdb # 打开数据库连接 db = MySQLdb.connect(host='localhost',user='root',passwd='',d ...
- python操作mysql数据库的相关操作实例
python操作mysql数据库的相关操作实例 # -*- coding: utf-8 -*- #python operate mysql database import MySQLdb #数据库名称 ...
- python操作mysql数据库增删改查的dbutils实例
python操作mysql数据库增删改查的dbutils实例 # 数据库配置文件 # cat gconf.py #encoding=utf-8 import json # json里面的字典不能用单引 ...
- Python操作MySQL数据库9个实用实例
用python连接mysql的时候,需要用的安装版本,源码版本容易有错误提示.下边是打包了32与64版本. MySQL-python-1.2.3.win32-py2.7.exe MySQL-pytho ...
- Python 操作 MYSQL
本文介绍了 Python 操作 MYSQL.执行 SQL 语句.获取结果集.遍历结果集.取得某个字 段.获取表字段名.将图片插入数据库.执行事务等各种代码实例和详细介绍,代码居多, 是一桌丰盛唯美的代 ...
- Python开发【第十一篇】:Python操作MySQL
本篇对于Python操作MySQL主要使用两种方式: 1.原生模块pymsql. 2.ORM框架SQLAchemy. pymsql pymsql是Python中操作MySQL的模块,其使用方法和MyS ...
- Python操作MySQL案例
最近都在学习Python代码,希望学会Python后,能给我带来更高的工作效率,所以每天坚持学习和拷代码,下面是一个Python操作MySQL的一个实例,该实例可以让更多的人更好了解MySQLdb模块 ...
- python连接mysql实例分享_python
示例一 #coding=UTF-8 import sys import MySQLdb import time reload(sys) sys.setdefaultencoding('utf-8') ...
随机推荐
- Git统计代码变化率
统计2017-03-01到2017-03-31代码变更率 代码统计命令参考:git log --pretty=tformat: --since ==2017-03-01 --until=2017-03 ...
- 【LeetCode】275. H-Index II 解题报告(Python)
作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 题目地址: https://leetcode.com/problems/h-index- ...
- 【LeetCode】284. Peeking Iterator 解题报告(Python)
作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 题目地址:https://leetcode.com/problems/peeking-i ...
- 3942 - Remember the Word
3942 - Remember the Word 思路:字典树+dp dp[i]前i个字符,能由给的字串组成的方案数,那么dp[i] = sum(dp[i-k]);那么只要只要在字典树中查看是否有字串 ...
- Codeforces 567C:Geometric Progression(DP)
time limit per test : 1 second memory limit per test : 256 megabytes input : standard input output : ...
- Improving Adversarial Robustness Using Proxy Distributions
目录 概 主要内容 proxy distribution 如何利用构造的数据 Sehwag V., Mahloujifar S., Handina T., Dai S., Xiang C., Chia ...
- Layui的本地存储方法-Layui.data的基本使用
本地存储是对 localStorage 和 sessionStorage 的友好封装,可更方便地管理本地数据. localStorage 持久化存储:layui.data(table, setting ...
- Java开发之项目分包
在我们开始准备写一个大点规模的项目时,我们不能随便地从main函数就开始往下写,要有清晰的逻辑思路和各个层面上的数据的传递和交互. 同时在我们写项目时也应该分出不同的包来做不同的事情,比如view包就 ...
- Shell调试Debug的三种方式
Shell脚本进行Debug调试的三种方法如下: 1.在调用脚本的时候开启deubg sh -x shell.sh 2.在脚本文件首行开启deubg #!/bin/bash -x 3. 使用set开启 ...
- SpringBoot 之 多环境切换
方式一:分开多个配置文件 # /src/main/resources/application.yaml server: port: 8080 spring: profiles: active: dev ...