Python importação Excel para um banco de dados

Python importação Excel para um banco de dados

Python como uma linguagem de script fácil de aprender, quando se lida com a operação do sistema e manutenção, também ajudado pelo grande. Para saber ferramenta de gerenciamento de pacotes CentOS é através de Python.

Em operação real, os dados básicos fornecidos pelo usuário são muitas vezes baseadas em terminar Excel, os dados do Excel para o banco de dados é um requisito muito comum. Este artigo descreve como conseguir dados do Excel ler baseados Python3, e importados para o banco de dados.

Este procedimento será aplicado aos dois pacotes podem ser instalados por pip

pip install openpyxl pyodbc

estrutura de programa, como mostrado na FIG.

módulo de entrada executado pela Run. Ele se baseia SqlHelper e ExcelHelper. SqlHelper responsável pela operação da leitura do banco de dados, ExcelHelper Excel responsável operação de leitura. ExcelHelper lendo o arquivo Excel, analisado como um tipo de modelo de matriz. Modelo SqlHelper através da leitura da matriz para executar operações de banco de dados.

código do módulo de entrada run.py é como se segue:

#通过from ... import引入其他模块
from excelHelper import ExcelHelper
from sqlHelper import SqlHelper

def run():
    importxls('xls/xxx.xlsx')

def importxls(path):
    # 读取excel文件,获取model列表
    excelHelper = ExcelHelper(path,'Sheet1')
    modellist = excelHelper.readExcelForModels()
    # 通过sqlHelper传入读取到的model列表插入数据库
    sqlHelper = SqlHelper()
    sqlHelper.insertModels(modellist)

#执行
run()

model.py modelo é o modelo de dados para definir as nossas necessidades depois de ler dados do Excel obtidos. Os campos personalizados que eles precisam na linha:

class Model:
    def __init__(self,code,name):
        self.code = code
        self.name = name
    
    #通过定义str,帮助在调试时,通过print()函数打印数据
    def __str__(self):
        str = "code:%s  name:%s  tenantId:%s  targetRemark1:%s" % (self.code, self.name) 
        return str

excelHelper.py ler excel classe de ajuda:

#引入openpyxl以读取excel文件
import openpyxl
#引入模型定义
from model import Model

class ExcelHelper:
    def __init__(self, path, sheetname):
        #列数定义,Index从1开始计算
        self.codeIndex = 2
        self.nameIndex = 3
        #读取workbook。data_only=True,以避免Excel公式值读取的问题
        wb = openpyxl.load_workbook(path, data_only=True)
        #读取标签
        self.sheet = wb[sheetname]
        #读取excel中的行数
        self.max_row = self.sheet.max_row

    def readExcelForModels(self):
        list = []
        #循环读取excel,行数从1开始计算
        for rowIndex in range(2, self.max_row):
            cellCode = self.sheet.cell(row=rowIndex, column=self.codeIndex).value
            if(cellCode == None):
                continue
            #读取所需数据
            code = self.sheet.cell(row=rowIndex, column=self.codeIndex).value
            name = self.sheet.cell(row=rowIndex, column=self.nameIndex).value
            #设置model
            data = Model(code, name) 
            #插入数组
            list.append(data)
        return list

appsettings.json definir a seqüência de ODBC conexão com o banco

{
  "ConnectionStrings": {
    "Default": "DRIVER={SQL SERVER};Server=xx; Database=xx; UID=xx;PWD=xx;"
  }
}

configReader.py ler a seqüência de conexão de banco de dados:

import json

def getConnectString(name):
    config = open("appsettings.json")
    setting = json.load(config)
    connectstring = setting['ConnectionStrings'][name]
    return connectstring

sqlHelper.py classe operações de banco de dados ajuda:

#sqlHelper.py
#pyodbc通过odbc读取数据库
import pyodbc
#configReader来读取appsettings.json
import configReader
#textwrap用于处理sql字符串
import textwrap

class SqlHelper:
    def __init__(self):
        #获取数据库连接字符串
        conn_info = configReader.getConnectString('Default')
        #连接数据库
        self.mssql_conn = pyodbc.connect(conn_info)
        #获取游标
        self.mssql_cur = self.mssql_conn.cursor()
    
    #校验字段是否为空
    def isEmpty(self, v):
        if(v == None or v.isspace()):
            return True
        else:
            return False
    #插入数据
    def insertModels(self, modelList):
        for model in modelList:
            if(self.isEmpty(item.code) or self.isEmpty(item.name)):
                continue
            #通过textwrap构建sql字符串,?代表预留参数位
            sql = textwrap.dedent("""
            INSERT INTO [dbo].[Model]
            ([Code]
            ,[Name]
            )
            VALUES
            (?
            ,?
            )
            """)
            #循环插入数据
            self.mssql_cur.execute(sql, model.code, model.name)
        #数据库事务提交
        self.mssql_conn.commit()
    
    #展示如何进行数据库查询,假设存在一个可能为null的字段tennantId
    def getIdByCode(self, code, tennantId):
        #由于tennantId可能为null,因此查询语句会有is null的差别
        if(tennantId == None):
            #通过fetchval()来读取数据
            return self.mssql_cur.execute("select Id from Model where TenantId is null and Code = ?", code).fetchval()
        else:
            return self.mssql_cur.execute("select Id from Model where TenantId = ? and Code = ?", tennantId, code).fetchval()

operações de banco de dados Python importação excel realizada, em geral, é muito simples. Especialmente pyodbc para a operação do banco de dados tem um bom pacote para as operações de modificação, proporcionando commits de transação padrão. E suporta a entrada de parâmetros, substituindo os parâmetros do caminho. python é realmente um fácil de usar a linguagem, outras línguas fazer uma coisa semelhante, um monte de eficiência de programação mais fraca.

Espero que isso ajude.

Acho que você gosta

Origin www.cnblogs.com/wswind/p/12501491.html
Recomendado
Clasificación