最近自学了python,希望能够对自己的工作有所帮助,重点学习了python链接数据库。啥也不说了、直接上代码,希望高手多指教
# -*- coding:UTF-8 -*-
import xlsxwriter
import pymysql # Python3的mysql模块
import time # excel写入
''' 此方法 是传进来sql 语句,然后执行 并返回结果集'''
def get_data(sql):
db=pymysql.connect(host='******',user='***',passwd='mima',db='dbname',port=***,charset='utf8')
# 使用 cursor() 方法创建一个游标对象 cursor
cursor = db.cursor()
# 使用 execute() 方法执行 SQL 查询
# cursor.execute("select date_format(create_time, '%Y-%m-%d')as dd,count(*) from USER where date_format(create_time, '%Y-%m')='2018-02'group by dd ")
cursor.execute(sql)
# 使用 fetchone() 方法获取单条数据.
results = cursor.fetchall()
print(results)
# 关闭数据库连接
db.close()
# 返给结果给函数调用者。
return results
def write_data_to_excel():
sql="select date_format(create_time, '%Y-%m-%d')as dd,count(*) from user where date_format(create_time, '%Y-%m')='2018-02'group by dd "
#获取sql 语句的结果集
results = get_data(sql)
#新建一个xlsx文档 此文档是空的 没有任何内容包括sheet页
workbook = xlsxwriter.Workbook('file2.xlsx')
#在xlsx 中新建一个sheet 页
worksheet = workbook.add_worksheet() # ()中可以加入名字
# 遍历result中的没个元素 将数据写入新建的sheet页中。
#第一层循环 是循环的所有结果集 (('2017-11-15', 8), ('2017-11-21', 8), ('2017-11-22', 1), ('2017-11-23', 5), ('2017-11-24', 2))
for i in range(len(results)): # 这句一共执行了几次? 元组的长度
#第二层循环,是循环的 单个结果中的 每个属性 如上述结果集中第二个 ('2017-11-21', 8) 取出每个属性 '2017-11-21' 和 8
for j in range(len(results[i])):
# 将属性写入对应的表格的做表中 如 0-0 写入的是 2017-11-21 0-1 写入的是 8
worksheet.write(i, j, results[i][j])
#写入完毕后关闭此xls 文件
workbook.close()
#调用上面的方法 将数据写入
write_data_to_excel()