九色国产,午夜在线视频,新黄色网址,九九色综合,天天做夜夜做久久做狠狠,天天躁夜夜躁狠狠躁2021a,久久不卡一区二区三区

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
使用python查詢oracle并保存為excel的兩種方法

這里介紹使用python查詢oracle保存為excel的兩種方法,一種用openpyxl保存,另一種用pandas保存。
一、使用openpyxl保存。
1.導(dǎo)入第三方庫

import cx_Oracle import openpyxl
  • 1
  • 2
  • 1
  • 2

2.定義導(dǎo)出函數(shù),sql語句為單獨(dú)保存在同一個(gè)文件夾的sql文件,通過打開文件讀取sql語句,不直接把sql語句寫在代碼里可讓代碼顯得簡潔,還可以不必處理sql語句的換行問題。在寫入excel文件時(shí)要注意防止用科學(xué)計(jì)數(shù)法寫入造成信息丟失,先轉(zhuǎn)換為字符串再進(jìn)行保存。

def export_excel(sql,fileName):
    rr = curs.execute(sql)
    rows = curs.fetchall()

    #獲取字段名
    title = [ i[0] for i in curs.description ]

    #創(chuàng)建excel表
    wb = openpyxl.Workbook()
    ws = wb.active

    #插入字段名到第一行
    for c in range(len(title)):
        ws.cell(1,c 1,value = title[c])

    #寫入查詢數(shù)據(jù)
    for r in range(len(rows)):
        for c in range(len(rows[r])):
            if rows[r][c]: #值不為空時(shí)寫入,空值不寫入
                ws.cell(r 2,c 1,value=str(rows[r][c])) #str()防止用科學(xué)計(jì)數(shù)法寫入造成信息丟失

    #保存sql腳本
    ws1 = wb.create_sheet('sql')
    ws1.cell(1,1,value=sql)

    wb.save(fileName)
    wb.close()
curs.close()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28

3.主代碼,連接數(shù)據(jù)庫conn = cx_Oracle.connect('user/password@IP/db’,encoding = 'utf-8’) 時(shí)注意添加編碼格式,否則無法顯示中文。

if __name__ == '__main__': conn = cx_Oracle.connect('user/password@IP/db',encoding = 'utf-8') #utf-8顯示中文 curs= conn.cursor() #打開sql文件獲取sql語句 with open('查詢語句.sql') as sql_0: sql = sql_0.read() export_excel(sql,'book1.xlsx') conn.close()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

二、使用pandas保存,這種方法相對(duì)簡單點(diǎn)。
1.導(dǎo)入第三方庫

import cx_Oracle
import openpyxl
import numpy as np
import pandas as pd
  • 1
  • 2
  • 3
  • 4
  • 1
  • 2
  • 3
  • 4

2.定義導(dǎo)出函數(shù),在對(duì)科學(xué)計(jì)數(shù)問題的處理上和使用openpyxl不太相同,不能直接將所有列轉(zhuǎn)為字符串類型,通過判斷列類型為int類型再對(duì)該列轉(zhuǎn)為str類型。

def export_excel(sql,fileName): rr = curs.execute(sql) rows = curs.fetchall() #rows = curs.fetchmany(20) #獲取字段名 title = [ i[0] for i in curs.description ] writer = pd.ExcelWriter(fileName) df = pd.DataFrame(rows,columns = title) #print(df.loc[:,'DJXH'].dtype) '''#將int類型改為str類型,防止輸出到excel變?yōu)榭茖W(xué)計(jì)數(shù)法導(dǎo)致信息不完整,不能直接df = pd.DataFrame(rows,columns = title).astype(str),這樣空值會(huì)在excel中保存為NaN等值。 for t in title: if df.loc[:,t].dtype == 'uint64': df.loc[:,t] = df.loc[:,t].astype(str)''' #astype(str)轉(zhuǎn)為str類型,空值將變?yōu)?nan' df = df[df['登記序號(hào)'].isin(djxh)].astype(str) #將'nan'值替換為空,這樣在excel中空值不保存為nan df = df.replace('nan', np.nan) #保存結(jié)果 df.to_excel(writer,sheet_name = 'result',index = False) df_sql = pd.DataFrame([sql]) df_sql.to_excel(writer,sheet_name = 'sql',index = False) writer.save() curs.close()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30

3.主代碼,和使用openpyxl相同。

if __name__ == '__main__':
    conn = cx_Oracle.connect('user/password@IP/db',encoding = 'utf-8') #utf-8顯示中文
    curs= conn.cursor()

    #打開sql文件獲取sql語句
    with open('查詢語句.sql') as sql_0:
        sql = sql_0.read()

    export_excel(sql,'book1.xlsx')

conn.close()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
生成王者榮耀裝備信息Markdown和Excel
Python股票量化交易到入門實(shí)戰(zhàn)04(修改版)
oracle中操作BLOB
從多個(gè)數(shù)據(jù)源中提取數(shù)據(jù)進(jìn)行ETL處理并導(dǎo)入數(shù)據(jù)倉庫
Oracle數(shù)據(jù)庫用戶名及密碼查詢
vs2010連接到oracle 10g
更多類似文章 >>
生活服務(wù)
熱點(diǎn)新聞
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服