2 個簡單的 python 指令碼,連線 MySQL 和讀取 Excel

巫樂發表於2019-12-30

python指令碼

第一次寫部落格,已經工作一年半了,從事PHP後端,最近嘗試新語言,換換胃口,看了看go和python,最後選擇了python。剛好上週遇到讀取excel,編寫sql匯入資料庫的工作,嘗試寫個指令碼。下次就不用重複寫了。

執行環境:

  • python 3.8.1
  • windows 7

一。連線mysql

連線mysql有很多種方式:pymysql mysql-connector mysqldb。之前看到的一篇效能分析上,非ORM操作mysqldb效能最佳,ORM操作mysql-connector效能最佳。指令碼暫時不涉及效能方面的問題,就選擇了pymysql。

安裝依賴庫

pip3 install PyMySQL

指令碼

import pymysql

def runSql(sql):

    db = pymysql.connect(host="127.0.0.1",
                         port=3306,
                         user="test",
                         password="test",
                         db="test",
                         charset="utf8")

    #這個是控制返回的資料結構為字典的,即把資料表裡的欄位名作為key返回
    # cursor = db.cursor(cursor=pymysql.cursors.DictCursor)
    cursor = db.cursor()
    try:
        cursor.execute(sql)

        results = cursor.fetchall()

    except:
        print("error")

    db.close()
    return results
#pip3 install PyMySQL

二. 讀取excel

python 對excel的處理有xlrd/xlwt與openpyxl ,查閱的效能分析結果是,對大檔案的處理xlrd/xlwt效能更高,暫時對效能分析沒有深入接觸,沒有遇到效能瓶頸,指令碼暫時不考慮這些,這裡使用xlrd/xlwt。

安裝依賴庫

pip3 install xlrd

指令碼

import xlrd

table = xlrd.open_workbook(r'C:.sers.dministrator.esktop.ead.xlsx')

sheet = table.sheet_by_name('Sheet1')  # 根據名字取表單

nrows = sheet.nrows  # 獲取行數

line = 1
while line < nrows:
    a = sheet.cell(line, 1).value
    b = sheet.cell(line, 2).value
    line += 1

其他相關方法

name = table.sheet_names()  # 獲得所有表單的名字
ncols = sheet.ncols   # 獲取列數

結語

上面的2個依賴庫裡還有很多的方法,這裡暫時沒有用到,下次用到再補充。

本作品採用《CC 協議》,轉載必須註明作者和本文連結

相關文章