Python importación de Excel a una base de datos

Python importación de Excel a una base de datos

Python como un lenguaje de programación fácil de aprender, cuando se trata de la operación del sistema y de los trabajos de mantenimiento, ayudado también por los grandes. Para saber CentOS herramienta de gestión de paquetes es a través de Python.

En la operación real, los datos básicos proporcionados por el usuario a menudo se basan en terminar Excel, los datos de Excel en la base de datos es un requisito muy común. En este artículo se describe cómo lograr leer datos de Excel basados ​​python3, e importado en la base de datos.

Este procedimiento se aplicará a los dos paquetes puede ser instalado por pip

pip install openpyxl pyodbc

Estructura del programa como se muestra en la figura.

módulo de entrada ejecutado por Ejecutar. Se basa SqlHelper y ExcelHelper. SqlHelper responsable de la operación de lectura de base de datos, ExcelHelper responsable Excel operación de lectura. ExcelHelper leyendo el archivo de Excel, analiza como un tipo de modelo de matriz. Modelo SqlHelper mediante la lectura de la matriz para realizar operaciones de base de datos.

código del módulo de entrada run.py es como sigue:

#通过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 es el modelo de datos para definir nuestras necesidades después de leer los datos de Excel obtenidos. Los campos personalizados que necesitan en la línea:

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 leer excel clase de ayuda:

#引入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 la cadena de conexión de base de ODBC

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

configReader.py leer la cadena de conexión de base de datos:

import json

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

sqlHelper.py clase de ayuda operaciones de bases de datos:

#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()

operaciones de bases de datos de Python importación de Excel llevan a cabo, en general, es muy simple. Especialmente pyodbc para el funcionamiento de la base de datos tienen un paquete bueno para las operaciones de modificación, que proporciona confirmaciones de transacciones predeterminado. Y admite la entrada de parámetros mediante la sustitución de los parámetros de la forma. Python es de hecho una herramienta fácil de usar el lenguaje, otras lenguas hacen una cosa similar, una gran cantidad de programación de la eficiencia más débil.

Espero que esto te ayude.

Supongo que te gusta

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