把讀取sql的結果寫入到excel文件


1.利用pandas模塊

# encoding: utf-8
import time
import pandas as pd
import pymysql

def getrel(sql):
    '''
    連接mysql數據庫,根據條件查詢出來我們所需要數據
    :return: 根據條件從sql查詢出來的數據
    '''
    conn = pymysql.connect(host='localhost', user='root', password='123',
                           db='db_test', charset='utf8mb4')
    cur = conn.cursor()
    cur.execute(sql)  # 輸入要查詢的SQL
    rel = cur.fetchall()
    cur.close()
    conn.close()
    return rel


def getxlsx(rel):
    '''
    把從數據庫中查詢出來的數據寫入excel文件
    :param rel:
    :return:
    '''
    file_name = time.strftime('%Y-%m-%d') + '.xlsx'
    dret = pd.DataFrame.from_records(list(rel))  # mysql查詢的結果為元組,需要轉換為列表
    dret.to_excel(file_name, index=False, header=("平台貨號", "商品名稱", "售價"))  # header 指定列名,index 默認為True,寫行名


if __name__ == '__main__':
    sql = 'select goods_commonid,goods_name,goods_price from mall_goods_common where store_id=110 and set_new_time>1560182400;'
    rel = getrel(sql)
    getxlsx(rel)

 2.使用xlwt模塊

import pymysql
import xlwt

def get_sel_excel(sql):
    '''
    連接mysql並把查詢出來的數據寫入excel表格
    :param sql:
    :return:
    '''
    conn = pymysql.connect(
        host="localhost",
        port=3306,
        user="root",
        passwd="123",
        db="db_test",
        charset="utf8mb4"
    )

    # 建立游標
    cursor = conn.cursor()
    print("開始查詢表!")
    # 執行sql語句
    cursor.execute(sql)
    # 獲取查詢到結果
    res = cursor.fetchall()
    print(res)
    w_excel(res)


def w_excel(res):
    '''
    把數據寫入excel表格中
    :param res:
    :return:
    '''
    book = xlwt.Workbook()  # 新建一個excel
    sheet = book.add_sheet('vehicle_land')  # 新建一個sheet頁
    title = ['平台貨號', '商品名稱', '售價']
    # 寫表頭
    i = 0
    for header in title:
        sheet.write(0, i, header)
        i += 1

    # 寫入數據
    for row in range(1, len(res)):
        for col in range(0, len(res[row])):
            sheet.write(row, col, res[row][col])
        row += 1
    col += 1
    book.save('vehicle_land.xls')
    print("導出成功!")


if __name__ == "__main__":
    sql = 'select goods_commonid,goods_name,goods_price from mall_goods_common where store_id=110 and set_new_time>1560182400;'
    get_sel_excel(sql)

 3.pandas 

import pandas as pd
from sqlalchemy import create_engine

# 初始化數據庫連接,使用pymysql模塊
# MySQL的用戶:root, 密碼:你的密碼, 端口:3306,數據庫:trustengine = create_engine("mysql+pymysql://root:password@localhost:3306/trust",encoding='utf-8')
# 查詢語句,選出testexcel表中的所有數據
sql = """select goods_commonid,goods_name,goods_price from mall_goods_common where store_id=110 and set_new_time>1560182400;"""

# read_sql_query的兩個參數: sql語句, 數據庫連接
df = pd.read_sql_query(sql,con=engine)

# 輸出testexcel表的查詢結果
print(df)


# 創建一個writer對象, 里面的參數是一個新的表格文件名
writer = pd.ExcelWriter('mydf.xlsx')
# 利用to_excel()方法將不同的數據框及其對應的sheet名稱寫入該writer對象中
df.to_excel(writer,sheet_name='test1',index=False)
# 數據寫出到excel文件中,最后保存
writer.save()

 4.pandas

# coding=utf-8
import pandas as pd
from pandas import DataFrame
from sqlalchemy import create_engine
import time

# 開始時間
start = time.time()
# 建立鏈接
engine = create_engine('mysql+pymysql://root:123@192.168.148.61:3306/ppx_mall_dev_db')
# 查詢語句
sql = '''select goods_commonid,goods_name,goods_price from mall_goods_common where store_id=110 and set_new_time>1560182400;'''
# 讀取mysql
df = pd.read_sql_query(sql, engine)
print("從mysql中讀取數據成功!開始將數據導入到excel表格中...")
# 將讀取的數據格式化成DataFrame類型
test_data = DataFrame.from_records(df)
# 將數據寫入excle中
test_data.to_excel("E:\\testdata.xlsx", index=False)
print("導出成功!")
# 程序結束時間
end = time.time()
# 打印出程序的運行時間
print('Running time: {} Seconds'.format(end - start))

 

如需修改表格樣式,可參數:https://www.cnblogs.com/phoebechiang/p/10512337.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM