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

Python實(shí)現(xiàn)數(shù)據(jù)庫與Excel文件之間的數(shù)據(jù)自動(dòng)化導(dǎo)入與導(dǎo)出

 更新時(shí)間:2024年06月28日 09:40:08   作者:Eiceblue  
數(shù)據(jù)庫和Excel文件是兩種常見且重要的數(shù)據(jù)存儲(chǔ)方式,本文將介紹如何使用Python有效地實(shí)現(xiàn)數(shù)據(jù)庫與Excel文件之間的數(shù)據(jù)自動(dòng)化導(dǎo)入與導(dǎo)出,以SQLite數(shù)據(jù)庫為例,需要的朋友可以參考下

引言

數(shù)據(jù)庫和Excel文件是兩種常見且重要的數(shù)據(jù)存儲(chǔ)方式。數(shù)據(jù)庫通常用于大規(guī)模數(shù)據(jù)的高效存儲(chǔ)、管理和查詢,而Excel則以其直觀的界面和簡(jiǎn)單的操作方式廣泛應(yīng)用于數(shù)據(jù)分析、報(bào)告生成和可視化等領(lǐng)域。在實(shí)際工作中,可能需要在這兩者之間進(jìn)行數(shù)據(jù)的導(dǎo)入與導(dǎo)出。例如,從數(shù)據(jù)庫中提取數(shù)據(jù)到Excel進(jìn)行深入分析和圖表繪制,或者將Excel文件中的數(shù)據(jù)清洗整理后導(dǎo)入數(shù)據(jù)庫進(jìn)行集中管理和進(jìn)一步處理。而Python因其便捷性和豐富的生態(tài),能夠幫助用戶通過簡(jiǎn)單的代碼處理數(shù)據(jù)庫與Excel文件之間數(shù)據(jù)轉(zhuǎn)換。

本文將介紹如何使用Python有效地實(shí)現(xiàn)數(shù)據(jù)庫與Excel文件之間的數(shù)據(jù)自動(dòng)化導(dǎo)入與導(dǎo)出,以SQLite數(shù)據(jù)庫為例。

本文所使用的方法需要用到sqlite3(Python標(biāo)準(zhǔn)庫中的組件)和Spire.XLS for Python(PyPI: pip install Spire.XLS)。

用Python將數(shù)據(jù)庫數(shù)據(jù)導(dǎo)出到Excel表格

我們可以使用 sqlite3 模塊從數(shù)據(jù)庫讀取數(shù)據(jù),并利用 Spire.XLS 模塊創(chuàng)建 Excel 文件并將數(shù)據(jù)寫入其中,從而實(shí)現(xiàn)數(shù)據(jù)庫數(shù)據(jù)的導(dǎo)出。詳細(xì)步驟如下:

  1. 導(dǎo)入必要的模塊。
  2. 連接數(shù)據(jù)庫:使用 sqlite3.connect() 連接 SQLite 數(shù)據(jù)庫,并創(chuàng)建游標(biāo) cursor 執(zhí)行 SQL 命令。
  3. 獲取表名:執(zhí)行 SQL 查詢獲取數(shù)據(jù)庫中所有表的名稱,并存儲(chǔ)在 tableNames 列表中。
  4. 創(chuàng)建 Excel 工作簿:初始化一個(gè) Workbook 對(duì)象,并使用 Workbook.Worksheets.Clear() 方法清除默認(rèn)工作表。
  5. 遍歷數(shù)據(jù)庫表:對(duì)于 tableNames 中的每一個(gè)表名:
    • 查詢表的列信息,提取列名并添加到 columnNames 列表中。
    • 獲取表中的所有數(shù)據(jù)行到 rows 中。
    • 使用 Workbook.Worksheets.Add(sheetname) 方法在 Excel 中添加一個(gè)以表名命名的新工作表。
    • 使用 Worksheet.Range[row, col].Value 屬性將 columnNames 作為標(biāo)題寫入工作表。
    • 遍歷數(shù)據(jù)行,并使用相同的屬性將數(shù)據(jù)寫入對(duì)應(yīng)的單元格。
    • 格式化工作表。
  6. 使用 Workbook.SaveToFile() 方法將工作簿保存到文件。
  7. 釋放 workbook 的資源并關(guān)閉數(shù)據(jù)庫連接。

代碼示例

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

# 連接到數(shù)據(jù)庫
conn = sqlite3.connect("output/CompanyInfo.db")
cursor = conn.cursor()

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

# 創(chuàng)建 Excel 文件
workbook = Workbook()
workbook.Worksheets.Clear()

# 遍歷數(shù)據(jù)庫中的每個(gè)表
for tableName in tableNames:
    # 獲取表的列名
    cursor.execute(f"PRAGMA table_info('{tableName}')")
    columnsInfo = cursor.fetchall()
    columnNames = [columnInfo[1] for columnInfo in columnsInfo]

    # 獲取表的數(shù)據(jù)
    cursor.execute(f"SELECT * FROM {tableName}")
    rows = cursor.fetchall()
    
    # 創(chuàng)建工作表
    sheet = workbook.Worksheets.Add(tableName)
    
    # 將標(biāo)題行寫入工作表
    for i in range(len(columnNames)):
        sheet.Range[1, i + 1].Value = columnNames[i]
    
    # 將數(shù)據(jù)寫入工作表
    for j in range(1, len(rows)):
        column = rows[j]
        for k in range(len(column)):
            sheet.Range[j + 1, k + 1].Value = column[k]
    
    # 設(shè)置工作表格式
    sheet.AllocatedRange.Style.Font.FontName = "Times New Roman"
    sheet.AllocatedRange.Style.Font.Size = 12.0
    sheet.AllocatedRange.AutoFitRows()
    sheet.AllocatedRange.AutoFitColumns()

# 保存 Excel 文件
workbook.SaveToFile("output/DatabaseToExcel.xlsx", FileFormat.Version2016)
workbook.Dispose()
conn.close()

結(jié)果

用Python將Excel表格數(shù)據(jù)導(dǎo)入到數(shù)據(jù)庫

我們也可以使用 Spire.XLS 從 Excel 文件讀取各種數(shù)據(jù)類型,然后使用 sqlite3 將數(shù)據(jù)寫入數(shù)據(jù)庫。詳細(xì)步驟如下:

  1. 導(dǎo)入必要的模塊。
  2. 創(chuàng)建 Workbook 實(shí)例:初始化一個(gè) Workbook 對(duì)象以操作 Excel 工作簿。
  3. 加載 Excel 文件:使用 LoadFromFile 方法從指定路徑加載 Excel 文件。
  4. 連接數(shù)據(jù)庫:使用 sqlite3.connect() 連接 SQLite 數(shù)據(jù)庫,并創(chuàng)建游標(biāo) cursor 執(zhí)行 SQL 命令。
  5. 遍歷工作表:對(duì)于工作簿中的每個(gè)工作表:
    • 使用 Worksheet.Name 屬性獲取工作表對(duì)象和名稱,并去除名稱中的空格。
    • 提取標(biāo)題:使用 Worksheet.Range[row, col].Value 屬性收集第一行數(shù)據(jù)作為數(shù)據(jù)庫表的列名,并去除空格。
    • 創(chuàng)建數(shù)據(jù)庫表:基于提取的標(biāo)題動(dòng)態(tài)生成 SQL 語句以創(chuàng)建表(如果不存在)。
    • 插入數(shù)據(jù):遍歷工作表的每一行,使用 Worksheet.Range[row, col].Value 屬性收集數(shù)據(jù),然后構(gòu)造 SQL 插入語句將數(shù)據(jù)插入相應(yīng)的數(shù)據(jù)庫表。
  6. 提交并關(guān)閉數(shù)據(jù)庫連接:將所有更改提交到數(shù)據(jù)庫并關(guān)閉數(shù)據(jù)庫連接。
  7. 釋放 Workbook 資源:清理 Workbook 對(duì)象所使用的資源。

代碼示例

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

# 創(chuàng)建 Workbook 實(shí)例
workbook = Workbook()

# 加載 Excel 文件
workbook.LoadFromFile("Sample.xlsx")

# 連接到數(shù)據(jù)庫
conn = sqlite3.connect("output/ExcelToDatabase.db")
cursor = conn.cursor()

for s in range(workbook.Worksheets.Count):
    # 獲取一個(gè)工作表
    sheet = workbook.Worksheets.get_Item(s)

    # 獲取工作表名稱
    sheetName = sheet.Name
    sheetName = sheetName.replace(" ", "")

    # 獲取標(biāo)題行中的數(shù)據(jù)
    header = []
    for i in range(sheet.AllocatedRange.ColumnCount):
        headerValue = sheet.Range[1, i + 1].Value
        headerValue = headerValue.replace(" ", "")
        header.append(headerValue)

    # 創(chuàng)建數(shù)據(jù)庫表
    createTableSql = f"CREATE TABLE IF NOT EXISTS {sheetName} ({', '.join([f'{header[i]} TEXT' for i in range(len(header))])})"
    cursor.execute(createTableSql)

    # 插入數(shù)據(jù)到數(shù)據(jù)庫表中
    for row in range(1, sheet.AllocatedRange.RowCount):
        data = []
        for col in range(sheet.AllocatedRange.ColumnCount):
            # 獲取單元格值
            value = sheet.Range[row + 1, col + 1].Value
            data.append(value)
        # 插入單元格值到數(shù)據(jù)庫表中
        insertSql = f"INSERT INTO {sheetName} ({', '.join(header)}) VALUES ({', '.join(['?' for _ in data])})"
        cursor.execute(insertSql, data)

# 提交更改并關(guān)閉連接
conn.commit()
conn.close()

workbook.Dispose()

結(jié)果

本文展示了如何使用 Python 代碼在 Excel 工作簿和數(shù)據(jù)庫之間進(jìn)行數(shù)據(jù)的導(dǎo)入與導(dǎo)出。

以上就是Python實(shí)現(xiàn)數(shù)據(jù)庫與Excel文件之間的數(shù)據(jù)自動(dòng)化導(dǎo)入與導(dǎo)出的詳細(xì)內(nèi)容,更多關(guān)于Python數(shù)據(jù)庫與Excel導(dǎo)入與導(dǎo)出的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • 一步步教你用python給女朋友寫個(gè)微信自動(dòng)提醒的程序

    一步步教你用python給女朋友寫個(gè)微信自動(dòng)提醒的程序

    如今微信已成為我們?nèi)粘I畹闹饕涣鞴ぞ?但是微信自身的功能有時(shí)候可能并不能滿足我們的需要,因此我們會(huì)想是否可以進(jìn)行微信功能的拓展呢,這篇文章主要給大家介紹了關(guān)于利用python給女朋友寫了個(gè)微信自動(dòng)提醒程序的相關(guān)資料,需要的朋友可以參考下
    2021-10-10
  • 淺談Python大神都是這樣處理XML文件的

    淺談Python大神都是這樣處理XML文件的

    這篇文章主要介紹了詳解Python大神都是這樣處理XML文件的,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2019-05-05
  • python用PyInstaller打包成windows可執(zhí)行的exe(細(xì)致版)

    python用PyInstaller打包成windows可執(zhí)行的exe(細(xì)致版)

    PyInstaller的基本功能是將Python腳本打包成可執(zhí)行文件,這意味著用戶無需安裝Python環(huán)境,就能運(yùn)行打包后的程序,這篇文章主要介紹了python如何用PyInstaller打包成windows可執(zhí)行exe的相關(guān)資料,需要的朋友可以參考下
    2025-04-04
  • Python中選擇結(jié)構(gòu)實(shí)例講解

    Python中選擇結(jié)構(gòu)實(shí)例講解

    在本篇文章里小編給大家整理了關(guān)于Python選擇結(jié)構(gòu)的基礎(chǔ)知識(shí)點(diǎn)及相關(guān)實(shí)例,有需要的朋友們可以學(xué)習(xí)參考下。
    2022-11-11
  • python實(shí)現(xiàn)五子棋程序

    python實(shí)現(xiàn)五子棋程序

    這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)五子棋程序,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-04-04
  • 使用Python可視化展示排序算法

    使用Python可視化展示排序算法

    這篇文章主要介紹了使用Python可視化展示排序算法,讓我們創(chuàng)建一個(gè)名為algorithm?.py的文件,在這個(gè)文件中,我們將用python編寫所有的排序算法,需要的朋友可以參考下
    2024-11-11
  • Python之tkinter文字區(qū)域Text使用及說明

    Python之tkinter文字區(qū)域Text使用及說明

    這篇文章主要介紹了Python之tkinter文字區(qū)域Text使用及說明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-05-05
  • python采集百度搜索結(jié)果帶有特定URL的鏈接代碼實(shí)例

    python采集百度搜索結(jié)果帶有特定URL的鏈接代碼實(shí)例

    這篇文章主要介紹了python采集百度搜索結(jié)果帶有特定URL的鏈接代碼實(shí)例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-08-08
  • Python+Dlib+Opencv實(shí)現(xiàn)人臉采集并表情判別功能的代碼

    Python+Dlib+Opencv實(shí)現(xiàn)人臉采集并表情判別功能的代碼

    這篇文章主要介紹了Python+Dlib+Opencv實(shí)現(xiàn)人臉采集并表情判別,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-07-07
  • Python面向?qū)ο缶幊蘲epr方法示例詳解

    Python面向?qū)ο缶幊蘲epr方法示例詳解

    這篇文章主要介紹了Python面向?qū)ο缶幊蘲epr方法的示例詳解,文中附含詳細(xì)的代碼示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助
    2021-09-09

最新評(píng)論

靖西县| 古交市| 丰城市| 凌源市| 普陀区| 顺义区| 天镇县| 镇坪县| 广宗县| 台北县| 沂水县| 水城县| 临海市| 牙克石市| 横峰县| 深泽县| 大理市| 仙桃市| 南康市| 鄯善县| 洪湖市| 庆安县| 内江市| 和顺县| 莲花县| 城固县| 尚志市| 高要市| 宜昌市| 黔江区| 泾源县| 宝丰县| 广东省| 弥渡县| 澄江县| 叶城县| 松江区| 桦川县| 依安县| 榆树市| 时尚|