Найти - Пользователи
Полная версия: Добавление данных из таблицы xlsx в базу .db с форматированием
Начало » Python для новичков » Добавление данных из таблицы xlsx в базу .db с форматированием
1
greker1
Добрый день.
Пытаюсь добавить данные для их обработки из нескольких файлов xlsx в одну созданную базу baza.db с помощью питона версии 3.9.7 (пакет Anaconda + jupyter notebook).

Есть код, создающий две таблицы:

 import sqlite3
import pyodbc
import pandas as pd
from datetime import datetime, timedelta, date
import time
import openpyxl
from openpyxl.utils.dataframe import dataframe_to_rows
import csv
with sqlite3.connect(r'путь \baza.db') as conn:
    cursor = conn.cursor()
    # Открытие файла Excel и чтение данных
    df1 = pd.read_excel(r'путь \файл1.xlsx', sheet_name='Лист1', usecols="A:J", nrows=4)
    df2 = pd.read_excel(r'путь \файл1.xlsx', sheet_name='Лист2', usecols="A,C:I,K:Q,U:V", nrows=6, skiprows=1)
    for index, row in df1.iterrows():
        values_list = [row[column] for column in df1.columns]
        insert_query = """
        INSERT INTO Table1 (Ст1, Ст2, Ст3, Ст4, Ст5, Ст6, Ст7, Ст8, Ст9, Ст10)
        VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?);
        """
        cursor.execute(insert_query, values_list)
    conn.commit()
    for index, row in df2.iterrows():
        values_list = [row[column] for column in df2.columns]
        insert_query = """
        INSERT INTO Table2 (Ст1, Ст2, Ст3, Ст4, Ст5, Ст6, Ст7, Ст8, Ст9, Ст10, Ст11, Ст12, Ст13, Ст14, Ст15, Ст16, Ст17)
        VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?);
        """
        cursor.execute(insert_query, values_list)
    conn.commit()
cursor.close()
conn.close()
print("Данные подгружены"+time.ctime())

Есть две проблемы:
1) В столбце A с листа 2 (df2) надо добавить кавычки в каждую ячейку столбца: сейчас там все значения в формате ‘АБВ Вапваупауи’, а нужен вид ‘АБВ “Вапваупауи”’. Значения текстовые, разная длина.
2) Надо запихнуть данные с обоих листов файла в одну таблицу (а не две), по сути сложенную из обеих (к Table1 подтянуть значения Table2 (столбцы: Ст2, Ст3, Ст4, Ст5, Ст6, Ст7, Ст8, Ст9, Ст10, Ст11, Ст12, Ст13, Ст14, Ст15, Ст16, Ст17), на обоих листах файла excel текстовые значения в столбцах A совпадают (спасибо кавычкам), но могут быть расположены в разном порядке.

Подскажите, как допилить, пожалуйста)))
vic57
по первому вопросу можно так
 >>> s ='aaa qqqq'
>>> l = s.split()
>>> l[0] + ' ' + '"{}"'.format(l[1])
'aaa "qqqq"'
по второму не совсем понятно что вы складываете
greker1
vic57
по второму не совсем понятно что вы складываете
Должна получиться таблица, состоящая из Table1 и добавленных к ней столбцов Table2 (кроме первого). В обеих таблицах в первом столбце значения одинаковые, но могут быть в разном порядке.
Например, в Table1 (лист1 файла):
123 “Бухгалтерия”
123 “HR”
123 “IT”
123 “Логистика”

В Table2 (лист2 файла):
123 “IT”
123 “Бухгалтерия”
123 “Логистика”
123 “HR”


vic57
по первому вопросу можно так
Спасибо большое, проверю)))
vic57
greker1
Должна получиться таблиц
а как она должна выглядеть? если объединение таблиц то и пишите в одну таблицу
greker1
Есть изначально две таблицы с данными по одним и тем же отделам, но с разными данными в столбцах. Как их объединить в одну общую таблицу, связав по отделам?
Table1 (лист1 файла):
123 “Бухгалтерия” 123 456 4584651
123 “HR” 4535 7873576 763453543
123 “IT” 694651654 1563156 542
123 “Логистика” 1 9 56465465165164
Table2 (лист2 файла):
123 “IT” 6565 6554 123
123 “Бухгалтерия” 3451345 12 456429679
123 “Логистика” 0 77 999
123 “HR” 75735375 1 786757342342345

Должно получиться:
123 “Бухгалтерия” 123 456 4584651 3451345 12 456429679
123 “HR” 4535 7873576 763453543 75735375 1 786757342342345
123 “IT” 694651654 1563156 542 6565 6554 123
123 “Логистика” 1 9 56465465165164 0 77 999
vic57
ну типа так
 l1 = [
['123 “Бухгалтерия”', '123 456 4584651'],
['123 “HR”', '4535 7873576 763453543'],
['123 “IT”', '694651654 1563156 542'],
['123 “Логистика”', '1 9 56465465165164'],
]
l2 = [
['123 “IT”', '6565 6554 123'],
['123 “Бухгалтерия”', '3451345 12 456429679'],
['123 “Логистика”', '0 77 999'],
['123 “HR”', '75735375 1 786757342342345']
]
'''
123 “Бухгалтерия” 123 456 4584651 3451345 12 456429679
123 “HR” 4535 7873576 763453543 75735375 1 786757342342345
123 “IT” 694651654 1563156 542 6565 6554 123
123 “Логистика” 1 9 56465465165164 0 77 999
'''
t = l1 + l2
d = {}
for line in t:
    d[line[0]] = []
for line in t:
    d[line[0]] += line[1:]
for k in d: 
    print(k,' '.join(d[k]))
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB