日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學無先后,達者為師

網站首頁 編程語言 正文

python從數據庫中取出文件保存到excel,csv表格中的辦法:

作者:夸父追夢@ 更新時間: 2022-05-06 編程語言

需求:

從數據庫中查詢出的數據,直接保存到excel表格中的兩種辦法:

這里從sqlite3中查詢出來的數據是這樣的:

values 值為:[('31010251001390002578', 'xxx路門前南全東1'), ('31010251001390004176', 'XXX路門南全西'),('31010251001390002577', 'xxx路門前南全東2'),('31010251001390002512', 'xxx路門前南全東567'),('31010251001390002100', 'xxx路門前南全東8'),('31010251001390002999', 'xxx路門前南全東119'),('3101025100139009111', 'xxx路門前南全東11'),...]

values 值為:

[('31010251001390002578', 'xxx路門前南全東1'),

('31010251001390004176', 'XXX路門南全西'),

('31010251001390002577', 'xxx路門前南全東2'),

('31010251001390002512', 'xxx路門前南全東567'),

('31010251001390002100', 'xxx路門前南全東8'),

('31010251001390002999', 'xxx路門前南全東119'),

('3101025100139009111', 'xxx路門前南全東11'),...]


?其中每一項是一個元組:

('31010251001390002578', 'xxx路門前南全東1')

?把上述數據保存到excel表格的去:



?excel保存數據方法:

方法一:excel庫?xlsxwriter


    ######################excel-1-第一種保存的方法#################################3
    # ###from xlsxwriter.workbook import Workbook
    # ##### excel 讀取庫
    # # 1.workbook = Workbook('output.xlsx')
    # workbook = Workbook(excelname)   #output.xlsx
    # worksheet=workbook.add_worksheet()
    #
    #
    #
    # #############連接sqlite3數據庫,運行查詢命令,獲取查詢結構;
    # conn = sqlite3.connect("./datacheck.db")
    # cur = conn.execute(strsql)
    # values = cur.fetchall()  # 查詢結果集
    # #################values [('31010251001390002578', 'xxx路門前南全東'), ('31010251001390004176', 'XXX路門南全西'),...]
    # ################保存到excel表格中
    #
    # for i,row in enumerate(values):
    #     for j,value in enumerate(row):
    #         worksheet.write(i,j,value)
    #         # print(f"i={i},j={j},value={value}")  #i,j,value分別對應的值  i=7842,j=1,value=xxx路口西門全景1 ;i=7842,j=0,value=31011353001910138692
    #
    # workbook.close()

    #####################excel-1-第一種保存的方法##################################
    ############################################################################

    cur.close()   #游標關閉
    conn.close()   #連接關閉


方法2:openpyxl庫

    #################excel第二種保存方法:###################################
    wb=openpyxl.Workbook()
    wbsheet=wb.create_sheet("結果")




    # 連接sqlite3數據庫,運行查詢命令,獲取查詢結構;
    conn = sqlite3.connect("./datacheck.db")
    cur = conn.execute(strsql)
    values = cur.fetchall()   #查詢結果集

    for row in values:
        wbsheet.append(row)
        #print(row)



    wb.save(excelname)    #保存文件名稱


    cur.close()   #游標關閉
    conn.close()   #連接關閉


下面是函數代碼:

函數參數:

sqlanylistShare(sqlstement,excelname):

第一個是執行的sql命令,第二個參數是excel表格的名稱,例如“xx市服裝對比數據.xlsx”

def sqlanylistShare(sqlstement,excelname):
    #sql指令,用于尋找兩個表中國標id相同的信息
    # strsql="select netwl.gbid,netwl.devicename from netwl  inner join checkdata on netwl.gbid=checkdata.gbid"
    strsql=sqlstement


    # 2.excel寫庫 openpyxl

    #################excel第二種保存方法:###################################
    wb=openpyxl.Workbook()
    wbsheet=wb.create_sheet("結果")




    # 連接sqlite3數據庫,運行查詢命令,獲取查詢結構;
    conn = sqlite3.connect("./datacheck.db")
    cur = conn.execute(strsql)
    values = cur.fetchall()   #查詢結果集

    for row in values:
        wbsheet.append(row)
        print(row)



    wb.save(excelname)    #保存文件名稱


    #################excel第二種保存方法:###################################

    ######################excel-1-第一種保存的方法#################################3
    # ###from xlsxwriter.workbook import Workbook
    # ##### excel 讀取庫
    # # 1.workbook = Workbook('output.xlsx')
    # workbook = Workbook(excelname)   #output.xlsx
    # worksheet=workbook.add_worksheet()
    #
    #
    #
    # #############連接sqlite3數據庫,運行查詢命令,獲取查詢結構;
    # conn = sqlite3.connect("./datacheck.db")
    # cur = conn.execute(strsql)
    # values = cur.fetchall()  # 查詢結果集
    # #################values [('31010251001390002578', 'xxx路門前南全東'), ('31010251001390004176', 'XXX路門南全西'),...]
    # ################保存到excel表格中
    #
    # for i,row in enumerate(values):
    #     for j,value in enumerate(row):
    #         worksheet.write(i,j,value)
    #         # print(f"i={i},j={j},value={value}")  #i,j,value分別對應的值  i=7842,j=1,value=xxx路口西門全景1 ;i=7842,j=0,value=31011353001910138692
    #
    # workbook.close()

    #####################excel-1-第一種保存的方法##################################
    ############################################################################

    cur.close()   #游標關閉
    conn.close()   #連接關閉



csv文件的保存方法:

jieguovalues 值為:

[('31010251001390002578', 'xxx路門前南全東1'),

('31010251001390004176', 'XXX路門南全西'),

('31010251001390002577', 'xxx路門前南全東2'),

('31010251001390002512', 'xxx路門前南全東567'),

('31010251001390002100', 'xxx路門前南全東8'),

('31010251001390002999', 'xxx路門前南全東119'),

('3101025100139009111', 'xxx路門前南全東11'),...]

 jieguovalues = cursor.fetchall()

    # sipidfilename = sipid + ".xlsx"
    sipidfilename = sipid + ".csv"

    # wb = openpyxl.Workbook()
    # wbsheet = wb.create_sheet("結果")

    #########csv文件保存方式###############
    fscv=open(sipidfilename,'w')
    writer=csv.writer(fscv)

    for value in jieguovalues:
        writer.writerow(value)

    fscv.close()


csv文件保存字典格式數據:

# 直接字典字段寫入到CSV文件中
# coding:utf-8
import csv
data = {'id':'123','name':'anjing','age':'26'}
with open('123.csv','w')as f:
    fieldnames = {'id','name','age'}    # 表頭
    writer = csv.DictWriter(f,fieldnames=fieldnames)
    writer.writeheader()
    writer.writerow(data)

如果出現空行的問題,優化

# coding:utf-8
import csv
data = {'id':'123','name':'anjing','age':'26'}
# 加入參數“enwline=''”
with open('123.csv','w',newline='')as f:
    fieldnames = {'id','name','age'}
    writer = csv.DictWriter(f,fieldnames=fieldnames)
    writer.writeheader()
    writer.writerow(data)

原文鏈接:https://blog.csdn.net/wtt234/article/details/124489871

欄目分類
最近更新