Уведомления

Группа в Telegram: @pythonsu

#1 Окт. 19, 2024 14:29:29

greker1
Зарегистрирован: 2024-10-19
Сообщения: 3
Репутация: +  0  -
Профиль   Отправить e-mail  

Добавление данных из таблицы xlsx в базу .db с форматированием

Добрый день.
Пытаюсь добавить данные для их обработки из нескольких файлов 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 совпадают (спасибо кавычкам), но могут быть расположены в разном порядке.

Подскажите, как допилить, пожалуйста)))

Офлайн

#2 Окт. 20, 2024 12:16:37

vic57
Зарегистрирован: 2015-07-07
Сообщения: 899
Репутация: +  126  -
Профиль   Отправить e-mail  

Добавление данных из таблицы xlsx в базу .db с форматированием

по первому вопросу можно так

 >>> s ='aaa qqqq'
>>> l = s.split()
>>> l[0] + ' ' + '"{}"'.format(l[1])
'aaa "qqqq"'
по второму не совсем понятно что вы складываете

Офлайн

#3 Окт. 20, 2024 13:43:51

greker1
Зарегистрирован: 2024-10-19
Сообщения: 3
Репутация: +  0  -
Профиль   Отправить e-mail  

Добавление данных из таблицы xlsx в базу .db с форматированием

vic57
по второму не совсем понятно что вы складываете
Должна получиться таблица, состоящая из Table1 и добавленных к ней столбцов Table2 (кроме первого). В обеих таблицах в первом столбце значения одинаковые, но могут быть в разном порядке.
Например, в Table1 (лист1 файла):
123 “Бухгалтерия”
123 “HR”
123 “IT”
123 “Логистика”

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


vic57
по первому вопросу можно так
Спасибо большое, проверю)))

Офлайн

#4 Окт. 20, 2024 14:45:09

vic57
Зарегистрирован: 2015-07-07
Сообщения: 899
Репутация: +  126  -
Профиль   Отправить e-mail  

Добавление данных из таблицы xlsx в базу .db с форматированием

greker1
Должна получиться таблиц
а как она должна выглядеть? если объединение таблиц то и пишите в одну таблицу

Офлайн

#5 Окт. 20, 2024 15:15:15

greker1
Зарегистрирован: 2024-10-19
Сообщения: 3
Репутация: +  0  -
Профиль   Отправить e-mail  

Добавление данных из таблицы xlsx в базу .db с форматированием

Есть изначально две таблицы с данными по одним и тем же отделам, но с разными данными в столбцах. Как их объединить в одну общую таблицу, связав по отделам?
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

Отредактировано greker1 (Окт. 20, 2024 16:43:46)

Офлайн

#6 Окт. 20, 2024 21:14:52

vic57
Зарегистрирован: 2015-07-07
Сообщения: 899
Репутация: +  126  -
Профиль   Отправить e-mail  

Добавление данных из таблицы xlsx в базу .db с форматированием

ну типа так

 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]))

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version