Python 调用MySQL数据库

    1. 需要引用的库

      1. import pymysql
      2. from matplotlib import pyplot as plt
      3. import numpy as np
      4. import pandas as pd
      5. from openpyxl import load_workbook
      6. import os
    2. 调用MySQL

      1. def read_sql(db,sql):
      2. # 1.创建数据库连接
      3. conn = pymysql.connect(
      4. host = '192.168.0.109',
      5. user = 'root',
      6. passwd = '123456',
      7. port = 3306,
      8. #db = 'yiibaidb',
      9. charset = 'utf8'
      10. )
      11. # 2.使用cursor()方法获取操作游标
      12. cursor = conn.cursor()
      13. # 3.编写sql
      14. # 4.执行sql命令
      15. dbsql = 'use '+ db +';'
      16. cursor.execute(dbsql)
      17. #sql = 'select month from Department;'
      18. cursor.execute(sql)
      19. # 5.获取数据
      20. data = cursor.fetchall()
      21. # 6.关闭cursor
      22. cursor.close()
      23. # 7.关闭connection
      24. conn.close()
      25. return data
    3. 调用read_sql文件,将数据格式转换成DataFrame格式

      1. db = 'yiibaidb'
      2. sql = 'select revenue,month from Department'
      3. data = read_sql(db,sql)
      4. header = ['revenue','month']
      5. # 转换数据到DataFrame格式
      6. df = pd.DataFrame(data,columns= header)
    4. 保存数据到Excel文件,使用openpyxl时,保存文件的扩展名时xlsx,不能写成xls

      1. #将数据保存到Excel文件
      2. def save_to_xls(data,sheet_name):
      3. file_name = 'datasql.xlsx'
      4. if not os.path.exists(file_name):
      5. ew = pd.ExcelWriter(file_name)
      6. data.to_excel(ew,sheet_name = sheet_name)
      7. ew.save()
      8. else:
      9. wb = load_workbook(file_name)
      10. ew = pd.ExcelWriter(file_name)
      11. ew.book = wb
      12. data.to_excel(ew,sheet_name = sheet_name)
      13. ew.save()
    5. 保存数据到csv文件

      1. #保存到csv文件
      2. df.to_csv('testdata.csv',index=True)#不加index,可设为False
    6. 数据绘制曲线

      1. # 将数据绘制曲线
      2. x = []
      3. for i in data:
      4. x.append(i[0])
      5. plt.plot(x)
      6. plt.show()
      7. # 使用df数据画图
      8. plt.plot(df['revenue'])
      9. # 取df数据的第二列 或者取切片
      10. plt.plot(df.iloc[:,1])
      11. plt.show()