Экспорт из Excel в базу SQLite

Довольно часто возникают задачи заполнения базы данных из каких-либо внешних источников. В данном примере показано как можно наполнить базу данных (SQLlite) данными из xlsx файла.

В разработке я использую PyCharm 2018.3.3 Professoinal. Python 3.7

Используемые библитеки sqlite3 — работа с базой данных, openpyxl — работа с excel

1. Создайте новый проект Python и добавьте .py файл

2. Добавьте в проект базу данных и сделайте тестовый connect.

 

Программу можно разбить на три части:

  1. Подключение к базе и создание таблицы
  2. Чтение xlsx файла с данными
  3. Запись в базу и закрытие соединения

 

Исходный файл, который необходимо переложить в SQL

Экспорт из Excel в базу SQLite

После запуска программы у вас должна появиться таблица cars с точно такими же данными

Экспорт из Excel в базу SQLite

import os
import sqlite3
import openpyxl

def export_to_sqlite(): '''Экспорт данных из xlsx в sqlite'''

# 1. Создание и подключение к базе
# Получаем текущую папку проекта

prj_dir = os.path.abspath(os.path.curdir)
a = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))

# Имя базы base_name = 'auto.sqlite3'
# метод sqlite3.connect автоматически создаст базу, если ее нет

connect = sqlite3.connect(prj_dir + '/' + base_name)

# курсор - это специальный объект, который делает запросы и получает результаты запросов cursor = connect.cursor()
# создание таблицы если ее не существует

cursor.execute('CREATE TABLE IF NOT EXISTS cars (brand text, model text, distance int , year int)')

# 2. Работа c xlsx файлом 
# Читаем файл и лист1 книги excel 

file_to_read = openpyxl.load_workbook('Cars.xlsx', data_only=True) 
sheet = file_to_read['Sheet1']

# Цикл по строкам начиная со второй (в первой заголовки)

for row in range(2, sheet.max_row + 1):

# Объявление списка

data = []

# Цикл по столбцам от 1 до 4 ( 5 не включая) for col in range(1, 5):
# value содержит значение ячейки с координатами

row col value = sheet.cell(row, col).value

# Список который мы потом будем добавлять

data.append(value)

# 3. Запись в базу и закрытие соединения
# Вставка данных в поля таблицы

cursor.execute("INSERT INTO cars VALUES (?, ?, ?, ?);", (data[0], data[1], data[2], data[3]))

# сохраняем изменения connect.commit()
# закрытие соединения

connect.close()def clear_base(): '''Очистка базы sqlite'''

# Получаем текущую папку проекта

prj_dir = os.path.abspath(os.path.curdir)

# Имя базы base_name = 'auto.sqlite3'

connect = sqlite3.connect(prj_dir + '/' + base_name)
cursor = connect.cursor()

# Запись в базу, сохранение и закрытие соединения

cursor.execute("DELETE FROM cars")
connect.commit()
connect.close()

# Запуск функции

export_to_sqlite()
Друзья помогите этому контенту стать доступнее в социальных сетях.

Не проходи мимо жмакни по кнопке возможно кому то еще он будет полезен!