Форум программистов, компьютерный форум, киберфорум
Python: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
0 / 0 / 0
Регистрация: 05.10.2020
Сообщений: 15

Работа с SQL

14.10.2020, 17:43. Показов 1436. Ответов 20

Студворк — интернет-сервис помощи студентам
Привет , работал с SQL , столкнулся с такой проблемой : Записал полученный массив в csv формате , в виде таблицы , теперь необходимо содержимое этого файла записать в БД, но так как содержимое csv файла может меняться от количества поступающих на вход данных , то и БД должна тоже изменяться от количества данных .
Чтобы проще понять в csv есть заголовки , количество которых может меняться от поступающих исходных данных, каким образом организовать БД чтобы количество полей в ней изменялась так же как и количество заголовков в csv , если пишу очень скомкано и непонятно ,то простите засранца, но буду рад услышать мнения профи)
Вот код , таким образом осуществляю запись в csv :
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
 fname, _ = QFileDialog.getSaveFileName(self, 'Save', self.fname, "*.csv")
        if not fname: return
        self.tables_list.remove('result_table')
        self.my_massive.insert(0,self.tables_list)
        self.fname = fname
        f = open(fname, 'w')
        for i in range(len(self.my_massive)):
           tmp=[]
           if i==0: tmp.append('')
           if i >=1:
               tmp.append(self.tables_list[i-1])
           for j in range(len(self.my_massive[i])):
                tmp.append(self.my_massive[i][j])
 
           f.write("  ;  ".join(map(str, tmp)) + '\n')
           print(tmp)
        f.close()
это всего лишь кусок , но принцип должен быть понятен
на выходе имею такие данные
['', 'БГ31', 'БО31', 'ГПШ31', 'НБГ31', 'НБО31', 'Т201', 'Т202', 'Т203', 'Т204', 'Т205', 'Т206', 'Т_ГДД', 'Т_ГПС31', 'Т_ОДД']
['БГ31', 0, 0.199, 0.461, 0.433, 0.105, -0.192, 0.07, -0.023, 0.181, 0.004, -0.03, 0.028, -0.042, 0.082]
['БО31', 0.199, 0, 0.15, 0.182, 0.086, -0.086, 0.177, 0.141, 0.175, 0.312, 0.147, 0.09, 0.015, 0.199]
['ГПШ31', 0.461, 0.15, 0, 0.523, 0.123, -0.044, -0.025, 0.043, 0.168, -0.087, 0.098, 0.132, -0.199, 0.223]
['НБГ31', 0.433, 0.182, 0.523, 0, 0.117, -0.026, -0.114, 0.01, 0.193, 0.003, 0.145, 0.077, -0.096, 0.182]
['НБО31', 0.105, 0.086, 0.123, 0.117, 0, -0.049, -0.089, 0.244, 0.064, 0.188, 0.356, 0.186, 0.027, 0.14]
['Т201', -0.192, -0.086, -0.044, -0.026, -0.049, 0, 0.048, 0.14, -0.009, 0.016, -0.227, -0.113, -0.13, -0.267]
['Т202', 0.07, 0.177, -0.025, -0.114, -0.089, 0.048, 0, 0.009, -0.046, 0.2, -0.093, 0.103, -0.024, 0.117]
['Т203', -0.023, 0.141, 0.043, 0.01, 0.244, 0.14, 0.009, 0, -0.171, -0.001, 0.108, -0.03, -0.069, 0.101]
['Т204', 0.181, 0.175, 0.168, 0.193, 0.064, -0.009, -0.046, -0.171, 0, 0.03, -0.073, 0.005, -0.033, -0.135]
['Т205', 0.004, 0.312, -0.087, 0.003, 0.188, 0.016, 0.2, -0.001, 0.03, 0, 0.227, 0.006, 0.263, -0.012]
['Т206', -0.03, 0.147, 0.098, 0.145, 0.356, -0.227, -0.093, 0.108, -0.073, 0.227, 0, -0.152, 0.168, 0.05]
['Т_ГДД', 0.028, 0.09, 0.132, 0.077, 0.186, -0.113, 0.103, -0.03, 0.005, 0.006, -0.152, 0, -0.148, 0.525]
['Т_ГПС31', -0.042, 0.015, -0.199, -0.096, 0.027, -0.13, -0.024, -0.069, -0.033, 0.263, 0.168, -0.148, 0, -0.095]
['Т_ОДД', 0.082, 0.199, 0.223, 0.182, 0.14, -0.267, 0.117, 0.101, -0.135, -0.012, 0.05, 0.525, -0.095, 0]
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
14.10.2020, 17:43
Ответы с готовыми решениями:

ПРОГРАММИСТА ORACLE (SQL PL/SQL) DELPHI ждет его работа
работа в крупной страховой компании г. Москва (м. Тульская) Обязанности: Проектирование и разработка функциональных модулей в...

Работа программы с SQL БД без установки SQL Server
Всех приветствую, такой албанский вопрос. Есть прога написанная на Делфи использующая SQL базу данных. Можно ли скомпилировать...

Работа на SQL Server 2014 по методичке Бурков А.В для SQL server 2008
Всё пока шло нормально, но в лабораторной работе 7.Диаграммы и триггеры возникли трудности. Невозможно создать триггер простым правым...

20
Просто Лис
Эксперт Python
 Аватар для Рыжий Лис
5973 / 3735 / 1099
Регистрация: 17.05.2012
Сообщений: 10,791
Записей в блоге: 9
14.10.2020, 18:00
Цитата Сообщение от LEBOMit Посмотреть сообщение
то и БД должна тоже изменяться от количества данных .
Это невозможно.

Храни числа так:
Code
1
id, 'БГ31', 'БО31', 0.199
То есть строка1+строка2=значение эксперимента.
0
0 / 0 / 0
Регистрация: 05.10.2020
Сообщений: 15
14.10.2020, 18:11  [ТС]
Спасибо за скорый ответ , но я не понял, так как еще плохо ориентируюсь
Так как же мне записать в БД данный csv?
использовать 2 ключа к значению параметра ?
0
Эксперт Python
 Аватар для dondublon
4653 / 2073 / 366
Регистрация: 17.03.2012
Сообщений: 10,183
Записей в блоге: 6
14.10.2020, 18:13
LEBOMit, менять состав полей в зависимости от приходящих данных - плохая мысль, так не делается.
Я думаю, вам нужна просто пара таблиц с перекрёстными запросами.

Цитата Сообщение от LEBOMit Посмотреть сообщение
если пишу очень скомкано и непонятно ,то простите засранца, но буду рад услышать мнения профи)
Есть такое дело. Так что будьте любезны пример, причём достаточно хорошо раскрывающий вашу цель.
0
Просто Лис
Эксперт Python
 Аватар для Рыжий Лис
5973 / 3735 / 1099
Регистрация: 17.05.2012
Сообщений: 10,791
Записей в блоге: 9
14.10.2020, 18:26
данный csv - никак. А вот сгенерировать его по-другому - вполне.

Будет выглядеть так:
Code
1
2
3
БГ31;БГ31;0
БГ31;БО31;0.199
БГ31;ГПШ31;0.461
Добавлено через 1 минуту
Code
1
параметр1;параметр2;значение
0
0 / 0 / 0
Регистрация: 05.10.2020
Сообщений: 15
14.10.2020, 18:30  [ТС]
Что то я совсем теряюсь
вот что у меня на данном этапе есть , это полная чушь , но возможно отобразит мои намерения
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
def on_save(self):
 
            #Сохранение таблицы коэффицентов корреляции .полученной в результате вычислений
        fname, _ = QFileDialog.getSaveFileName(self, 'Save', self.fname, "*.csv")
        if not fname: return
        self.tables_list.remove('result_table')
        self.my_massive.insert(0,self.tables_list)
        self.fname = fname
        f = open(fname, 'w')
        for i in range(len(self.my_massive)):
           tmp=[]
           if i==0: tmp.append('')
           if i >=1:
               tmp.append(self.tables_list[i-1])
           for j in range(len(self.my_massive[i])):
                tmp.append(self.my_massive[i][j])
 
           f.write("  ;  ".join(map(str, tmp)) + '\n')
           print(tmp)
        f.close()
    #Создание БД для результатов вычислений коэффицентов корреляции
        name, done = QInputDialog.getText(self, 'Создание БД корреляции','Введите название БД')
        if done:
            name += '.db'
            print(name)
        if os.path.exists(name):
            QMessageBox.about(self, "Ошибка", "БД с таким именем уже сущестует")
            return 0
 
        try:
            conn = sql.connect(name)
            cursor = conn.cursor()
        except Exception as ex:
            print("\t При открытии возникла ошибка: \n", ex)
            return 0
 
        self.db_name = name + '.db'
        self.conn = conn
        self.cursor = cursor
 
        with open(self.fname) as File:
            reader = csv.reader(File, delimiter=',', quotechar=',',
                                    quoting=csv.QUOTE_MINIMAL)
            for row in reader:
                conn = sql.connect(name)
                cursor = conn.cursor()
                cursor.execute("CREATE TABLE user(name TEXT)")
                cursor.execute("INSERT INTO user VALUES (row)")
                conn.commit()
            File.close()
0
Просто Лис
Эксперт Python
 Аватар для Рыжий Лис
5973 / 3735 / 1099
Регистрация: 17.05.2012
Сообщений: 10,791
Записей в блоге: 9
14.10.2020, 18:35
SQL
1
CREATE TABLE ttt(param1 TEXT, param2 TEXT, val REAL);
Добавлено через 57 секунд
SQL
1
INSERT INTO ttt VALUES('БГ31', 'БГ31', 0);
0
Эксперт Python
 Аватар для dondublon
4653 / 2073 / 366
Регистрация: 17.03.2012
Сообщений: 10,183
Записей в блоге: 6
14.10.2020, 18:46
LEBOMit, нет, код не нужен, мало кому захочется в нём разбираться. Уж мне-то точно нет.
Опишите словами. С примером данных - что есть и что надо.
0
0 / 0 / 0
Регистрация: 05.10.2020
Сообщений: 15
14.10.2020, 19:13  [ТС]
есть двумерный список , его я построчно записываю в csv , после этого необходимо занести данные csv в БД sql , но количество строк и столбцов в csv может меняться , а это значит , что нужно создать новую БД с новым количеством полей , для всех элементов csv, как сделать так ,чтобы количество полей в таблице БД было равно количеству элементов в первой строке csv файла
Допустим есть csv , который содержит данные, кидал выше , необходимо сделать так ,что бы БД хранил в себе данные таким образом
Вложения
Тип файла: docx nf.docx (303.4 Кб, 5 просмотров)
0
0 / 0 / 0
Регистрация: 05.10.2020
Сообщений: 15
14.10.2020, 19:22  [ТС]
вот содержание csv
Вложения
Тип файла: docx nf.docx (481.5 Кб, 2 просмотров)
0
Фрилансер
 Аватар для Black Fregat
3709 / 2083 / 567
Регистрация: 31.05.2009
Сообщений: 6,683
14.10.2020, 19:34
Вы нам хорошо, несколько раз, описали массив, но совершенно непонятно, что это за данные, в чём их смысл и главное - что с ними предполагается делать.. Для чего писать эти данные в базу? Как потом планируется работать с этой базой? Сколько будет таких csv?
0
Эксперт Python
 Аватар для dondublon
4653 / 2073 / 366
Регистрация: 17.03.2012
Сообщений: 10,183
Записей в блоге: 6
14.10.2020, 19:39
LEBOMit, я примерно так и думал.
В таком случае, разверните вашу таблицу в 1d. Пример:

Ваша таблица, исходные данные:
Code
1
2
3
4
5
             столбец1 столбец2 ... столбецN
строка1    v11         v12              v1N
строка2   v21          v22              v2n
...
строкаM    vM1          vM2             VMM
В таблице всё это должно принять вид:

Code
1
2
3
4
Строка   /  Столбец   / Значение
строка1     столбец1      v11
строка1     столбецN      v1N
строкаM     столбец1      vM1
ну и далее по списку, думаю, принцип ясен.

+ зависит от целей. Может, стоит посмотреть в сторону HDF, на всякий случай. Он хорошо хранит числовые таблицы, но без sql.
1
0 / 0 / 0
Регистрация: 05.10.2020
Сообщений: 15
14.10.2020, 19:48  [ТС]
эти данные корреляционные коэффициенты , показывающие насколько сильно зависит изменение одного параметра от изменения другого , в дальнейшем эти данные нужны для определения статистических зависимостей , для этого данные будут браться из данной БД , и будем производить вычитания одной таблицы из другой , для определения статистических зависимостей.
В БД будут храниться сами таблицы , с которыми будем производить операции
В другой БД будут храниться результаты вычислений
CSV будет довольно таки большое количество
0
Эксперт Python
 Аватар для dondublon
4653 / 2073 / 366
Регистрация: 17.03.2012
Сообщений: 10,183
Записей в блоге: 6
14.10.2020, 19:51
LEBOMit, поставим вопрос так: вам строго задана именно эта БД? Если нет, то из каких соображений вы её выбрали? Какая система их будет потом читать и в каком виде ей было бы удобнее?
0
0 / 0 / 0
Регистрация: 05.10.2020
Сообщений: 15
14.10.2020, 19:54  [ТС]
dondublon, это работает согласен , но дело в том , что количество строк и столбцов не фиксировано , а меняется согласно количеству параметров , которые мы берем в обработку , их может быть больше или меньше
0
Эксперт Python
 Аватар для dondublon
4653 / 2073 / 366
Регистрация: 17.03.2012
Сообщений: 10,183
Записей в блоге: 6
14.10.2020, 19:57
И ещё, вопрос номер 2 - насколько много у вас этих данных. SQL, как видите, хорошо работает с длинной 1d-колбасой, которая не уместится в памяти процесса (или размещать её там будет слишком накладно).
Но если у вас числовой квадрат в пределах 1000*1000, причём, что важно, вам нужны именно такое "слепки" - сдаётся мне, подобный способ хранения в sql для вас будет, как из пушки по воробьям. Возможно, лучше будет хранить blob-ы в каком-либо виде.

Добавлено через 59 секунд
LEBOMit, ну я кагбэ для такой задачи и дал рецепт. Просто предложил поразмыслить чуть шире.
0
0 / 0 / 0
Регистрация: 05.10.2020
Сообщений: 15
14.10.2020, 20:03  [ТС]
dondublon, БД строго мне не задана , взял ее так как имел небольшой опыт работы с ней , БД будет использовать программа которая будет обращаться к таблицам и производить с ними операции
0
Эксперт Python
 Аватар для dondublon
4653 / 2073 / 366
Регистрация: 17.03.2012
Сообщений: 10,183
Записей в блоге: 6
14.10.2020, 20:12
LEBOMit, на чём написана эта программа? Ещё раз - вам не нужны ячейки ваших таблиц (квадратных) по отдельности, вам нужны только "слепки", то есть матрицы полностью?

Добавлено через 5 минут
И совсем наивный вопрос - а почему бы вашей программе не читать этот самый csv?
0
0 / 0 / 0
Регистрация: 05.10.2020
Сообщений: 15
14.10.2020, 20:35  [ТС]
dondublon, Python 3.7.4, да только слепки

Добавлено через 5 минут
dondublon, данная таблица , это самая простая таблица отражает зависимость некоторых, но не всех параметров только на интервале 0.1 сек работы устройства , а вся продолжительность работы около 10 мин
0
Эксперт Python
 Аватар для dondublon
4653 / 2073 / 366
Регистрация: 17.03.2012
Сообщений: 10,183
Записей в блоге: 6
14.10.2020, 20:37
LEBOMit, вы всё не отвечаете намои вопросы полностью.
Ну, если вам нужны только полные матрицы - то пишите blob и не партесь со структурой. Это если вам вообще имеет смысл юзать БД.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
14.10.2020, 20:37
Помогаю со студенческими работами здесь

Работа с бд sql
Извините может быть вопрос глуппый но все же спрошу. Имеется приложение работаюшее с бд(sql сервер 2005) на нем gridViev где...

Работа с SQL
Всем доброго времени суток!) Подскажите пожалуйста: "В закладке Заказы формы Архив, при щелчке по полю Заказчики или Товары текущей записи...

работа с БД SQL
Всем привет подскажите советом, есть метод по поиску сотрудника, при нажатии на кнопку выкидывает такую ошибку. Как можно исправить сие...

работа с бд SQL на С#
Добрый День! У меня есть форма(windows form application) и база данных локальная .NET Framework Data Provider for Microsoft SQL Server...

Работа с sql
написал программу для работы с постгресом на моем компьютере и виртуальной машине все работает, а на машине заказчика не может подключиться...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Автозаполнение реквизита "Пробег" при выборе "Спецтехники"
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут. https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc Первый документ красиво выглядит, но без схемы. Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Программный код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере". Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита,. . .
Команды "Заполнить" и "Очистить" на форме документа
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти". На примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. В качестве источника данных выбран регистр накопления, в. . .
Кому нужен AOT?
DevAlt 26.03.2026
Решил сделать простой ланчер Написал заготовку: dotnet new console --aot -o UrlHandler var items = args. Split(":"); var tag = items; var id = items; var executable = args;. . .
Отправка уведомления на почту при изменении наименования справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере изменения наименования типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной. . .
модель ЗдравоСохранения 5. Меньше увольнений- больше дохода!
anaschu 24.03.2026
Теперь система здравосохранения уменьшает количество увольнений. 9TO2GP2bpX4 a42b81fb172ffc12ca589c7898261ccb/ https:/ / rutube. ru/ video/ a42b81fb172ffc12ca589c7898261ccb/ Слева синяя линия -. . .
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. . Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru