最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python輕松實(shí)現(xiàn)將數(shù)據(jù)庫數(shù)據(jù)一鍵導(dǎo)出到Excel

 更新時(shí)間:2026年03月31日 08:18:16   作者:咕白m625  
在日常工作中,我們經(jīng)常需要將數(shù)據(jù)庫中的數(shù)據(jù)導(dǎo)出為 Excel 文件,以便進(jìn)行數(shù)據(jù)分析或業(yè)務(wù)匯報(bào),本文將介紹如何僅使用 Python 內(nèi)置庫 + 免費(fèi) Excel 處理庫,實(shí)現(xiàn)將數(shù)據(jù)庫所有表批量導(dǎo)出到一個(gè) Excel 文件,每個(gè)表對(duì)應(yīng)一個(gè)獨(dú)立工作表

最近需要將 SQLite 數(shù)據(jù)庫里的所有表都導(dǎo)出成 Excel 表格,本文記錄一下如何只用 Python 內(nèi)置庫 + 免費(fèi) Excel 處理庫,實(shí)現(xiàn)將數(shù)據(jù)庫所有表批量導(dǎo)出到一個(gè) Excel 文件(每個(gè)表對(duì)應(yīng)一個(gè)獨(dú)立工作表)。

一、環(huán)境準(zhǔn)備

Python 環(huán)境:3.6及以上版本均可

依賴庫安裝

sqlite3:Python 自帶的 SQLite 數(shù)據(jù)庫操作庫,無需安裝

Free Spire.XLS:用于創(chuàng)建、寫入和格式化 Excel 文件的免費(fèi)版庫(注意限制)

打開命令行執(zhí)行安裝命令:

pip install Spire.Xls.Free

二、核心實(shí)現(xiàn)思路

通過以下 5 個(gè)步驟就能完成數(shù)據(jù)導(dǎo)出流程:

  • 連接本地 SQLite 數(shù)據(jù)庫
  • 獲取數(shù)據(jù)庫中所有表的名稱
  • 創(chuàng)建空白 Excel 工作簿
  • 遍歷每一張數(shù)據(jù)庫表:讀取表頭+數(shù)據(jù) → 新建工作表寫入 → 簡(jiǎn)單格式化
  • 保存 Excel 文件,關(guān)閉數(shù)據(jù)庫連接

三、完整可運(yùn)行代碼

from spire.xls import *
from spire.xls.common import *
import sqlite3

# ---------------------- 1. 連接SQLite數(shù)據(jù)庫 ----------------------
# 替換為你的數(shù)據(jù)庫文件路徑(相對(duì)路徑/絕對(duì)路徑均可)
conn = sqlite3.connect("Sales Data.db")
cursor = conn.cursor()

# ---------------------- 2. 獲取數(shù)據(jù)庫中所有表名 ----------------------
cursor.execute("SELECT name FROM sqlite_master WHERE type='table';")
# 提取所有表名,生成列表
tableNames = [name[0] for name in cursor.fetchall()]

# ---------------------- 3. 創(chuàng)建空白Excel工作簿 ----------------------
workbook = Workbook()
# 清空默認(rèn)工作表,避免多余表格
workbook.Worksheets.Clear()

# ---------------------- 4. 遍歷所有表,寫入Excel ----------------------
for tableName in tableNames:
    # 4.1 獲取當(dāng)前表的列名(Excel表頭)
    cursor.execute(f"PRAGMA table_info('{tableName}')")
    columnsInfo = cursor.fetchall()
    columnNames = [columnInfo[1] for columnInfo in columnsInfo]

    # 4.2 獲取當(dāng)前表的所有數(shù)據(jù)
    cursor.execute(f"SELECT * FROM {tableName}")
    rows = cursor.fetchall()
    
    # 4.3 新建工作表,名稱=數(shù)據(jù)庫表名
    sheet = workbook.Worksheets.Add(tableName)
    
    # 4.4 寫入表頭(第一行)
    for i in range(len(columnNames)):
        sheet.Range[1, i + 1].Value = columnNames[i]
    
    # 4.5 寫入表數(shù)據(jù)(修復(fù)原代碼bug:從第0行開始遍歷,避免丟失第一條數(shù)據(jù))
    for j in range(len(rows)):
        row_data = rows[j]
        for k in range(len(row_data)):
            sheet.Range[j + 2, k + 1].Value = row_data[k]
    
    # 4.6 表格格式化:自適應(yīng)行列寬度 (可選)
    sheet.AllocatedRange.AutoFitRows()    # 自適應(yīng)行高
    sheet.AllocatedRange.AutoFitColumns() # 自適應(yīng)列寬

# ---------------------- 5. 保存文件并釋放資源 ----------------------
# 保存Excel到指定路徑
workbook.SaveToFile("DataBaseToExcel.xlsx", FileFormat.Version2016)
# 釋放Excel對(duì)象資源
workbook.Dispose()
# 關(guān)閉數(shù)據(jù)庫連接
conn.close()

print("數(shù)據(jù)導(dǎo)出完成!")

雖然示例用的是 SQLite,但換 MySQL、PostgreSQL 也不難,只要把 sqlite3 那塊換成對(duì)應(yīng)的連接方式就行,后面的處理邏輯完全一樣。

四、幾個(gè)關(guān)鍵點(diǎn)解析

表名獲?。?/strong>sqlite_master 是 SQLite 的系統(tǒng)表,存著所有表的結(jié)構(gòu)信息。這里篩選 type='table' 拿到的是用戶表,系統(tǒng)表會(huì)被過濾掉。

列名獲取:PRAGMA table_info 這個(gè)命令挺有用的,返回每個(gè)列的詳細(xì)信息。取第二個(gè)字段就是列名。

數(shù)據(jù)寫入的坐標(biāo)問題:sheet.Range[行, 列] 是從1開始的,不是0。所以表頭寫在第一行 Range[1, i+1],數(shù)據(jù)從第二行開始 Range[j+1, k+1]。

格式化的小細(xì)節(jié):AllocatedRange 指的是已經(jīng)被寫入數(shù)據(jù)的區(qū)域,不用自己算邊界,省事。AutoFitRowsAutoFitColumns 會(huì)自動(dòng)調(diào)整行高列寬,不用手動(dòng)調(diào)了。

最后

這是一個(gè)非常輕量化的 Python 數(shù)據(jù)導(dǎo)出方案,沒有復(fù)雜的框架和配置,核心代碼不到50行,就能實(shí)現(xiàn)數(shù)據(jù)庫多表一鍵導(dǎo)出Excel。無論是處理銷售數(shù)據(jù)、業(yè)務(wù)報(bào)表還是測(cè)試數(shù)據(jù),都能直接復(fù)用,大幅提升日常數(shù)據(jù)處理效率。

到此這篇關(guān)于Python輕松實(shí)現(xiàn)將數(shù)據(jù)庫數(shù)據(jù)一鍵導(dǎo)出到Excel的文章就介紹到這了,更多相關(guān)Python數(shù)據(jù)庫數(shù)據(jù)導(dǎo)出到Excel內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • python按照list中字典的某key去重的示例代碼

    python按照list中字典的某key去重的示例代碼

    這篇文章主要介紹了python按照list中字典的某key去重的示例代碼,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-10-10
  • Python機(jī)器學(xué)習(xí)應(yīng)用之基于LightGBM的分類預(yù)測(cè)篇解讀

    Python機(jī)器學(xué)習(xí)應(yīng)用之基于LightGBM的分類預(yù)測(cè)篇解讀

    這篇文章我們繼續(xù)學(xué)習(xí)一下GBDT模型的另一個(gè)進(jìn)化版本:LightGBM,LigthGBM是boosting集合模型中的新進(jìn)成員,由微軟提供,它和XGBoost一樣是對(duì)GBDT的高效實(shí)現(xiàn),原理上它和GBDT及XGBoost類似,都采用損失函數(shù)的負(fù)梯度作為當(dāng)前決策樹的殘差近似值,去擬合新的決策樹
    2022-01-01
  • Python pydotplus安裝及可視化圖形創(chuàng)建教程

    Python pydotplus安裝及可視化圖形創(chuàng)建教程

    這篇文章主要為大家介紹了Python pydotplus安裝及可視化圖形創(chuàng)建教程示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-10-10
  • Python使用大語言模型進(jìn)行圖表可視化

    Python使用大語言模型進(jìn)行圖表可視化

    Python使用matplotlib進(jìn)行可視化一直有2個(gè)問題,一是代碼繁瑣,二是默認(rèn)模板比較丑,在大模型時(shí)代,這個(gè)問題有了另一種解法,下面我們就來看看如何使用大語言模型進(jìn)行圖表可視化吧
    2025-04-04
  • python使用numpy讀取、保存txt數(shù)據(jù)的實(shí)例

    python使用numpy讀取、保存txt數(shù)據(jù)的實(shí)例

    今天小編就為大家分享一篇python使用numpy讀取、保存txt數(shù)據(jù)的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2018-10-10
  • Python import用法以及與from...import的區(qū)別

    Python import用法以及與from...import的區(qū)別

    這篇文章主要介紹了Python import用法以及與from...import的區(qū)別,本文簡(jiǎn)潔明了,很容易看懂,需要的朋友可以參考下
    2015-05-05
  • PyCharm下載和安裝詳細(xì)步驟

    PyCharm下載和安裝詳細(xì)步驟

    這篇文章主要介紹了PyCharm下載和安裝詳細(xì)步驟,本文圖文并茂給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-12-12
  • 簡(jiǎn)化Python的Django框架代碼的一些示例

    簡(jiǎn)化Python的Django框架代碼的一些示例

    這篇文章主要介紹了簡(jiǎn)化Python的Django框架代碼的一些示例,實(shí)際上文中只是抽取了一些Django中最基本的功能用于簡(jiǎn)化入門者的上手復(fù)雜度,下,需要的朋友可以參考下
    2015-04-04
  • Python實(shí)現(xiàn)根據(jù)Excel表格某一列內(nèi)容與數(shù)據(jù)庫進(jìn)行匹配

    Python實(shí)現(xiàn)根據(jù)Excel表格某一列內(nèi)容與數(shù)據(jù)庫進(jìn)行匹配

    這篇文章主要為大家詳細(xì)介紹了Python如何使用pandas庫和Brightway2庫實(shí)現(xiàn)根據(jù)Excel表格某一列內(nèi)容與數(shù)據(jù)庫進(jìn)行匹配,需要的可以參考下
    2025-02-02
  • 卸載PyCharm Professional全過程

    卸載PyCharm Professional全過程

    本文詳細(xì)介紹了在Windows、Mac和Linux系統(tǒng)中卸載PyCharm Professional的方法,包括如何通過系統(tǒng)設(shè)置、自帶工具、手動(dòng)刪除文件夾等方式卸載,還提供了卸載時(shí)需要注意的事項(xiàng),如備份重要文件、取消自動(dòng)登錄設(shè)置、刪除殘留文件等
    2026-05-05

最新評(píng)論

永和县| 虞城县| 祁门县| 沾益县| 马公市| 仙居县| 泌阳县| 乌拉特中旗| 深水埗区| 新泰市| 布拖县| 汨罗市| 麻栗坡县| 道孚县| 井冈山市| 灯塔市| 白银市| 大厂| 乐业县| 习水县| 邳州市| 额敏县| 成武县| 麻阳| 镇沅| 朝阳区| 米脂县| 民丰县| 西平县| 西吉县| 灯塔市| 成都市| 界首市| 浦北县| 竹北市| 凌海市| 新宁县| 甘孜县| 临漳县| 桑植县| 鸡泽县|