<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
小絲:魚哥,我想請教一個問題。
小魚:國慶假期你經歷了什麼,讓你變得如此的 “善良”?
小絲:別這麼說,我一直很善良,至少,很正直…
小魚:打住,直接點, 你有什麼需要幫助的?
小絲:我就是想把查詢的結果也入到excel表中
小魚:然後呢?
小絲:sqlserver資料庫。
小魚:…好吧,還有其他要求嗎?
小絲:沒有了。
小魚:OK,我就花費幾分鐘,給你整一個。
2.1.1 安裝
凡是涉及第三方庫,必須需要安裝,
老規矩,直接pip安裝
pip install openpyxl pip install pymssql
其它安裝方式,直接看這兩篇:
《Python3,選擇Python自動安裝第三方庫,從此跟pip說拜拜!!》
《Python3:我低調的只用一行程式碼,就匯入Python所有庫!》
2.1.2 程式碼
程式碼範例
# -*- coding:utf-8 -*- # @Time : 2022-10-10 # @Author : Carl_DJ ''' 實現功能: 1、python直接連結sqlserver資料庫,讀取資料庫內容 2、執行 查詢結果,並寫入到excel表中 應用模組: pymssql,os,openpyxl ''' import os import pymysql #mysql資料庫連結 import pymssql #sqlserver資料庫連結 import openpyxl #輸出資料夾 outfile_path = './data' #如果沒有outfile_path 這個資料夾,就自動建立 if not os.path.exists(outfile_path): os.mkdir(outfile_path) #輸出檔名稱 filename = r'SQLtest.xlsx' file_path= os.path.join(outfile_path,old_filename) #建立資料庫連結 #連結SqlServer conn = pymssql.connect(host = "localhost", port = 3306, user = "", psd = "", database = "") if conn: print("資料庫連結成功") time.sleep(3) #sql查詢語句 sql = "select UUID,KEYID,TYPE,NAME,PRICE from KEY_INFO WHERE NAME LIKE '%測試商品名稱'" #建立遊標 cur = conn.cursor() #執行sql語句 cur.execute(sql) #返回查詢結果 result = cur.fetchall() #建立一個工作簿物件 wb = openpyxl.Workbook() #定義sheet名 Key_Info_sheet = wb.create_sheet('KEY_INFO ',0) #獲取預設sheet頁 # Key_Info_sheet = book.active #獲取表頭資訊 h1 = [filed[0] for filed in cur.description] Key_Info_sheet.append(h1) for i in result: Key_Info_sheet.append(i) wb.save(file_path) # 關閉資料庫連結 cur.close() conn.close()
執行結果
嗯,這就非常完美的寫入excel了。
小絲:魚哥,我這一次要執行多個SQL語句,
小魚:… 你不是說沒有了嗎
小絲:突然想起來的。
小魚:好吧,還有其他的要求嗎?
小絲:然後把每個SQL查詢結果寫入不同的sheet頁
小魚:xxxxxx!!還有嗎????!!!
小絲:沒有了。
小魚:有也沒有。
關於小絲提的要求, 我換一個寫法,畢竟,多學幾個知(姿 )識(勢 ),百利而無一害。
2.2.1 安裝
這次有pandas來寫。
所以,第一步,安裝
pip install pandas
其它安裝方式,直接看這兩篇:
《Python3,選擇Python自動安裝第三方庫,從此跟pip說拜拜!!》
《Python3:我低調的只用一行程式碼,就匯入Python所有庫!》
2.2.2 程式碼
sql檔案
程式碼範例
# -*- coding:utf-8 -*- # @Time : 2022-10-10 # @Author : Carl_DJ ''' 實現功能: 1、python直接連結SqlServer資料庫,實現SQL查詢 2、同時執行多條sql語句,查詢結果分別寫入不同的sheet頁中; 應用模組: pandas,pymssql,os,time ''' import pandas as pd from pandas.io import sql import pymssql import time,os #設定時間戳 now = time.strftime("%Y_%m_%d-%H%M%S",time.localtime()) print(f'執行時間:{now}') #建立資料庫連結 #連結SqlServer conn = pymssql.connect(host = "localhost", port = 3306, user = "", psd = "", database = "") if conn: print("資料庫連結成功") time.sleep(3) #輸出資料夾 file_path = './data' #如果沒有outfile_path 這個資料夾,就自動建立 if not os.path.exists(file_path): os.mkdir(file_path) #輸出檔案格式 Outfile_name = ( 'SqlsTest' + now + '.xlsx') #讀取sql檔名稱 sqls_name = r'SqlsFile.txt' #sql執行指令碼檔案(引數化路徑) MCsql_file = os.path.join(file_path,MCsql_name) #輸出資料夾路徑 Outfile_path = os.path.join(file_path,Outfile_name) #把查詢結果寫入不同的sheet頁,對sheet頁進行命名 sheet_names = ['KEY_INFO','PRO_INFO'] #定義讀取sql方法,返回sql語句 def sqls(MCsql_file): global sqlstrs with open(MCsql_file,'r',encoding='utf-8') as f: #每個sql之間,以「;」作為分隔符 sqlstrs = f.read().split(';') #定義資料查詢方法 def quert_method(sql_str): #設定全域性變數 global df df = pd.read_sql(sql_str,con=conn) #執行程式 if __name__ == '__main__': sqls(MCsql_file) #寫入excel檔案 with pd.ExcelWriter(Outfile_path) as writer: for i in range(0,len(sqlstrs)): quert_method(sqlstrs[i]) df.to_excel(writer,sheet_name=sheet_names[i],index=False,header=True) print("資料寫入完成!") # 關閉資料庫連結 conn.close() print("資料庫連結關閉!")
執行結果
看到這裡,今天的分享差不多就完成了。
今天主要通過連結SqlServer資料庫,把查詢資料結果寫入到excel表中。
同時,應用openpyxl 和pandas兩個模組,分別對excel的操作。
到此這篇關於Python實現SqlServer查詢結果並寫入多個Sheet頁的方法詳解的文章就介紹到這了,更多相關Python寫入多個Sheet頁內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45