<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          python 鏈接和操作 sqlite 與 xlsxwriter 生成 Excel 文件

          共 4227字,需瀏覽 9分鐘

           ·

          2021-02-21 20:58

          你好,我是悅創(chuàng)。新年過后我將繼續(xù)持續(xù)更新辦公自動(dòng)化系列教程。本文涉及代碼或資料獲取方式:

          1、關(guān)注公眾號:AI悅創(chuàng)

          2、后臺回復(fù):20210220

          鏈接和查詢代碼

          Python 自身攜帶 sqlite 庫,不需要額外安裝,直接使用即可。導(dǎo)入代碼:

          import sqlite3

          導(dǎo)入代碼之后,將 first.db 文件,放到代碼文件旁邊。這里用的是 ipynb ,所以是把 ipynb 和 first.db 文件放一起,不放一起就只能使用絕對路徑。如下圖:然后使用 sqlite3 庫,鏈接 first.db ?文件,代碼 ?firstdb = sqlite3.connect('first.db')正常運(yùn)行后,寫查詢語句,從數(shù)據(jù)庫中讀取全部數(shù)據(jù),如下代碼:

          # 查詢語句
          query_sql = "select * from info"
          for result in firstdb.execute(query_sql):
          print(result)

          輸出結(jié)構(gòu)效果圖:這是最簡單的查詢語句。數(shù)據(jù)庫都是支持查詢、刪除、增加、更新操作的。

          刪除數(shù)據(jù)操作

          刪除操作,將數(shù)據(jù)從數(shù)據(jù)庫中移除,關(guān)鍵詞 delete ,先刪除一條數(shù)據(jù),如下代碼:

          # 刪除特定數(shù)據(jù)
          delete_sql = "delete from info where id = 1 "

          firstdb.execute(delete_sql)
          firstdb.commit()

          # 查詢并輸出
          query_sql = "select * from info"
          for result in firstdb.execute(query_sql):
          print(result)

          運(yùn)行結(jié)果如下圖:

          插入更多數(shù)據(jù)

          增加的操作,關(guān)鍵詞 add ,使用 for 循環(huán),先批量的增加一些數(shù)據(jù)

          # 插入數(shù)據(jù)
          insert_sql = "insert into info(title, content, author) values ('第{}個(gè)標(biāo)題', '隨機(jī)的第{}個(gè)內(nèi)容', '匿名')"
          for i in range(10,20):
          sql = insert_sql.format(i,i*2)
          firstdb.execute(sql)
          firstdb.commit()


          # 查詢并輸出
          query_sql = "select * from info"
          for result in firstdb.execute(query_sql):
          print(result)

          for 循環(huán),從 10 循環(huán)到 20,不含 20,然后全部執(zhí)行 sql 語句和提交到數(shù)據(jù)庫。最后查詢?nèi)繑?shù)據(jù),看下有沒有增多,如下結(jié)果圖:

          更新數(shù)據(jù)操作

          數(shù)據(jù)有增加,最后更新數(shù)據(jù),關(guān)鍵詞update,做個(gè)條件更新,id大于等于4的數(shù)據(jù),設(shè)置 author 為“不匿名”,如下代碼:

          # 更新數(shù)據(jù)
          update_sql = "update info set author = '不匿名' where id >= 4"
          firstdb.execute(update_sql)


          # 查詢并輸出
          query_sql = "select * from info"
          for result in firstdb.execute(query_sql):
          print(result)

          最后的結(jié)果圖如下:以上就是 Python 操作 sqlite 的全部代碼了。

          【多選題】小練習(xí)

          數(shù)據(jù)庫支持哪些操作?

          • [ ] 更新數(shù)據(jù)
          • [ ] 新增數(shù)據(jù)
          • [ ] 查詢數(shù)據(jù)
          • [ ] 刪除數(shù)據(jù)

          xlsxwriter 生成 Excel 文件

          為什么需要掌握新的庫

          操作 xls

          xlrd 和 xlwt,以及 xlutils 足以滿足對 xls 文件的讀、寫、追加功能。但是辦公文件的格式,不是 xls,還有 xlsx,還有我們很少見的 xlsm 等。

          操作 xlsx

          xlsx 是 xls 的升級版,xls 是老版本的辦公軟件所支持的文件格式,且劣勢也比較明顯,當(dāng)文件數(shù)據(jù)超過65536 行和 256 列,使用 xls 則會導(dǎo)致數(shù)據(jù)截?cái)唷?/p>

          xlsx 的支持則更好,同樣多的數(shù)據(jù),xlsx 格式的文件體積小,支持的操作更多,軟件打開和動(dòng)作執(zhí)行的速度會更快。

          本次介紹的庫是 xlsxwriter 和 openpyxl ,這兩個(gè)庫均支持操作 xlsx 文件格式。掌握 xlsx 的讀寫操作,也是大勢所趨。

          寫入頭部標(biāo)題

          首先是學(xué)習(xí) xlsxwriter 庫,安裝命令:pip install xlsxwriter。

          第一步先導(dǎo)入庫,以及打開一個(gè) xlsx 文件:

          import xlsxwriter, random

          wb = xlsxwriter.Workbook('xlsxwriter插入數(shù)據(jù).xlsx')

          xlsx 和 xls 的操作都是一致的,單個(gè)文件,里面可以添加多個(gè) sheet。打開文件后,需要新建第一個(gè) sheet。

          worksheet1 = wb.add_worksheet('代碼操作記錄')

          有了 sheet,開始準(zhǔn)備標(biāo)題和數(shù)據(jù)并寫入文件。首先是頭部標(biāo)題:

          headings = ['日期','數(shù)據(jù)1','數(shù)據(jù)2']
          worksheet1.write_row('A1',headings)

          標(biāo)題保存在 headings 中,列表格式,然后逐個(gè)寫入到 sheet 中。

          但是這里的寫入操作,不是行數(shù) 列數(shù) 數(shù)據(jù)格式的單個(gè)數(shù)據(jù)寫入操作,而是直接寫入一行或者一列。這里用的是寫入 wtier_row,寫入一行,從 A1 開始,然后 A2 A3,一直往后寫。

          寫入數(shù)據(jù)內(nèi)容

          接下來寫入數(shù)據(jù),首先是創(chuàng)造數(shù)據(jù),結(jié)構(gòu)也是列表格式,然后使用寫入列的操作,將數(shù)據(jù)整行的寫入。

          data = [
          ['2019-1','2019-2','2019-3','2019-4','2019-5','2019-6','2019-7','2019-8','2019-9','2019-10','2019-11','2019-12',],
          [random.randint(1,100) for i in range(12)],
          [random.randint(1,100) for i in range(12)],
          ]
          worksheet1.write_column('A2',data[0])
          worksheet1.write_column('B2',data[1])
          worksheet1.write_column('C2',data[2])

          這里的數(shù)據(jù)使用了 random 庫隨機(jī)設(shè)置,所以第一塊代碼中,有 random 的導(dǎo)入。

          data 是列表,里面有三個(gè)列表,分別是日期和兩類數(shù)據(jù),結(jié)合頭部標(biāo)題,寫入的數(shù)據(jù),是三列,所以用的是write_column 函數(shù)。

          寫完之后,直接關(guān)閉即可。

          wb.close()

          用 Office 打開文件,如下圖:數(shù)據(jù)寫入完畢。

          新建圖表對象

          數(shù)據(jù)寫好了,但是 Excel 不僅僅只是存放數(shù)據(jù)的,也可以生成圖表。下面我們就學(xué)習(xí)下如何生成圖表。

          圖表的數(shù)據(jù),直接使用數(shù)據(jù) 1 和數(shù)據(jù) 2 的內(nèi)容,并且前半部分,數(shù)據(jù)的寫入就是上面的代碼。

          數(shù)據(jù)寫入之后,不關(guān)閉,然后繼續(xù)操作,生成一個(gè)圖表信息。

          第一部分,折線圖表的定義:

          chart_col = workbook.add_chart({'type':'line'})

          有了圖表對象,下面就是往里加入數(shù)據(jù)。

          圖表數(shù)據(jù)配置

          這里的數(shù)據(jù)有兩條,一個(gè)是數(shù)據(jù)1,一個(gè)是數(shù)據(jù)2,所以圖表添加數(shù)據(jù)的代碼如下:

          chart_col.add_series(
          {
          'name':'=sheet1!$B$1',
          'categories':'=sheet1!$A$2:$A$7',
          'values': '=sheet1!$B$2:$B$7',
          'line': {'color': 'blue'},
          }
          )
          chart_col.add_series(
          {
          'name':'=sheet1!$C$1',
          'categories':'=sheet1!$A$2:$A$7',
          'values': '=sheet1!$C$2:$C$7',
          'line': {'color': 'green'},
          }
          )

          有兩條數(shù)據(jù),所以添加了兩次。

          數(shù)據(jù)有四項(xiàng),數(shù)據(jù)名、具體值對應(yīng)的橫坐標(biāo) categories、具體值對應(yīng)的縱坐標(biāo) values、折線顏色,其中取值方式,直接是使用 sheet 的坐標(biāo)形式,例如 name 是 B1 和 B2,categories 都是 A2-A7,值分別是 B2-B7 和 C2-C7。

          完成圖表

          數(shù)據(jù)添加之后,在設(shè)置下坐標(biāo)的相關(guān)信息,就是標(biāo)題、x 軸、y 軸的名字,以及圖表位置和大小,代碼如下:

          chart_col.set_title({'name':'虛假數(shù)據(jù)折線圖'})
          chart_col.set_x_axis({'name':"橫坐標(biāo)"})
          chart_col.set_y_axis({'name':'縱坐標(biāo)'}) #設(shè)置圖表表頭及坐標(biāo)軸

          worksheet.insert_chart('D2',chart_col,{'x_offset':25,'y_offset':10}) #放置圖表位置

          wb.close()

          圖表的位置和大小,是根據(jù)左上角的起始表格和 x 和 y 的偏移計(jì)算的。

          代碼中是從 D2 做左上角起始,然后 x 和 y ?分別便宜 25 和 10 個(gè)單位,得到了圖片的最終大小。最后關(guān)閉 ?wb。

          下面是最后的 ?Excel 文件樣式:以上就是 xlsxwriter ?的使用示例,有圖的加入,比較有趣。但是 xlsxwriter ?只能創(chuàng)建新的文件,不能追加和讀取。

          長按識別下方二維碼,和眾多位島民一起

          把別人的頓悟,變成你的基本功


          ?花半秒鐘就看透事物本質(zhì)的人,
          ? 和花一輩子都看不清的人,
          ? 注定是截然不同的命運(yùn)。

          瀏覽 57
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評論
          圖片
          表情
          推薦
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  肏逼的视频 | A片网站免费黄色 | 国产剧情一区二区 | 97亚洲综合影院 | 足交一区二区三区 |