2 / 2 / 1
Регистрация: 13.09.2019
Сообщений: 134

Как добавить строку в кортеже и заполнить ее значениями

08.11.2019, 11:52. Показов 2740. Ответов 13
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день, помогите написать скрипт.

Есть кортеж который получаем из базы Оракл, есть пары:
stand setting_code
StandA val1
StandB val2

Эти пары не всегда совпадают, пример во вложенном файле.

stand setting_code
StandA val1
StandB val2
StandA(нужно добавить) None (нужно добавить)
StanB val3
StandA val4
StandB(нужно добавить) None (нужно добавить)

Хочу добавить, строку и в зависимости от стенда которого нет пары дописывать название стенда и остальные пустые поля добавлять None.

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
print("Content-type: text/html\n")
import cx_Oracle
conn = cx_Oracle.connect("логин, пасс")
curs = conn.cursor()
curs.execute("select filename as stand,setting_code,setting_kind_code,created_by,date_from,bool_value,is_default,substr(loadid,1,8) AS LOADID from WFCFG_2 where loadid like '%20191019%' UNION all select filename  as stand,setting_code,setting_kind_code,created_by,date_from,bool_value,is_default,substr(loadid,1,8) AS LOADID  from WFCFG_1 where loadid like '%20191019%' order by setting_code")
result = curs.fetchall()
print("<table border='1' align='center'>")
print ("<tn><th style='color:red'>stand</th><th style='color:red'>setting_code</th><th style='color:red'>setting_kind_code</th><th style='color:red'>created_by</th><th style='color:red'>date_from</th><th style='color:red'>bool_value</th><th style='color:red'>is_default</th><th style='color:red'>loadid</th></tn>")
for row in result:
    print('<tr>')
    for i in row:
        print("<td>%s</td>" % i)
    print('</tr>')
print('</table>')
conn.close
Миниатюры
Как добавить строку в кортеже и заполнить ее значениями  
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
08.11.2019, 11:52
Ответы с готовыми решениями:

Как добавить строку со значениями (формулами, ссылками) над или под активную строку?
Здравствуйте. Помогите! ЭТО Private Sub Worksheet_Change(ByVal Target As Range) If Target.Cells.Count &gt; 1 Then Exit Sub If Not...

Data Grid: как добавить новую строку? Как оперировать со значениями ячеек? Выгрузка?
Итак, для предыдущей задачи решил использовать Data Grid. Но возникли вопросы, как с ним работать. К примеру, как пользователь может...

Как вручную заполнить dategridview. Не могу добавить строку
Не могу добавить строку, столбцы на месте.

13
Автоматизируй это!
Эксперт Python
 Аватар для Welemir1
7391 / 4818 / 1246
Регистрация: 30.03.2015
Сообщений: 13,687
Записей в блоге: 29
08.11.2019, 12:28
Exle, если конечно верно понял, работать будет только если 2 стенда, превращаю в список списков, но можно как угодно, сам пример важен
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
other = {'StandA':'StandB', 'StandB':'StandA'}
a_list = ['StandA val1', 'StandB val2', 'StandB val3', 'StandA val4' , 'StandA val4']
pairs = list(map(lambda x:x.split(), a_list))
result = []
for index, a_l in enumerate(pairs):
    if index<len(pairs)-1 and a_l[0]==pairs[index+1][0]:
        result.append(a_l)
        result.append([other[a_l[0]], None])
    else:
        result.append(a_l)
if (a_l[0]=='StandA'):
    result.append(['StandB', None])
    
print(result)
0
2 / 2 / 1
Регистрация: 13.09.2019
Сообщений: 134
08.11.2019, 12:31  [ТС]
а как этот код правильно с моим подружить?
0
Автоматизируй это!
Эксперт Python
 Аватар для Welemir1
7391 / 4818 / 1246
Регистрация: 30.03.2015
Сообщений: 13,687
Записей в блоге: 29
08.11.2019, 12:34
Exle, я откуда знаю как? ты с питоном знаком? я тебе показал как можно решать задачу парности стендов. Дальше твое дело
0
2 / 2 / 1
Регистрация: 13.09.2019
Сообщений: 134
08.11.2019, 12:45  [ТС]
Можно подробнее объяснить что делает код и как скрестить его с кортежем

Добавлено через 4 минуты
я так понял, что этот список надо как-то заполнить из кортежа или преобразовать
a_list = ['StandA val1', 'StandB val2', 'StandB val3', 'StandA val4' , 'StandA val4']
как это правильно сделать?
0
Автоматизируй это!
Эксперт Python
 Аватар для Welemir1
7391 / 4818 / 1246
Регистрация: 30.03.2015
Сообщений: 13,687
Записей в блоге: 29
08.11.2019, 12:48
Цитата Сообщение от Exle Посмотреть сообщение
как скрестить его с кортежем
в последнем действии превратить в кортеж, если ты про сами пары, то добавляй их кортежами если нужно
если ты не знаешь как списки в кортежи превратить то может рано тебе на текущие задачи замахиваться? может матчасть читануть немного?

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
other = {'StandA':'StandB', 'StandB':'StandA'}
a_list = ['StandA val1', 'StandB val2', 'StandB val3', 'StandA val4' , 'StandA val4']
pairs = tuple(map(lambda x:tuple(x.split()), a_list))
result = []
for index, a_l in enumerate(pairs):
    if index<len(pairs)-1 and a_l[0]==pairs[index+1][0]:
        result.append(a_l)
        result.append((other[a_l[0]], None))
    else:
        result.append(a_l)
if (a_l[0]=='StandA'):
    result.append(['StandB', None])
result = tuple(result)   
print(result)
Добавлено через 54 секунды
Цитата Сообщение от Exle Посмотреть сообщение
как это правильно сделать?

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

Добавлено через 55 секунд
то, как тебе БД присылает это скорее всего аналог pairs, выведи в консоль да сравни - там кортеж кортежей
0
2 / 2 / 1
Регистрация: 13.09.2019
Сообщений: 134
08.11.2019, 13:37  [ТС]
может есть вариант это сделать просто запросом SQL а питоном просто выводить кортеж?

Добавлено через 48 минут
ребята есть еще более простые варианты решения, подвластные новичкам в Питоне?
0
Автоматизируй это!
Эксперт Python
 Аватар для Welemir1
7391 / 4818 / 1246
Регистрация: 30.03.2015
Сообщений: 13,687
Записей в блоге: 29
08.11.2019, 13:45
да, все они описаны в книге Марка Лутца "Изучаем Пайтон", надо только внимательно прочесть
0
2 / 2 / 1
Регистрация: 13.09.2019
Сообщений: 134
08.11.2019, 13:51  [ТС]
я так понимаю данное действие с кортежем с добавлением строки не выполнить без преобразования в список или другие данные?
0
Автоматизируй это!
Эксперт Python
 Аватар для Welemir1
7391 / 4818 / 1246
Регистрация: 30.03.2015
Сообщений: 13,687
Записей в блоге: 29
08.11.2019, 13:54
Exle,
для ответа на этот вопрос нужно почитать про кортеж. В нем нельзя ничего менять, добавлять, удалять. Нужно на его основе создавать новый список или кортеж
0
2 / 2 / 1
Регистрация: 13.09.2019
Сообщений: 134
08.11.2019, 15:20  [ТС]
а как создать список и наполнить его данными из запроса SQL, можно пример?
0
Автоматизируй это!
Эксперт Python
 Аватар для Welemir1
7391 / 4818 / 1246
Регистрация: 30.03.2015
Сообщений: 13,687
Записей в блоге: 29
08.11.2019, 15:24
Exle, прочесть главу по спискам в любой книге пайтон. У тебя с детства отвращение к чтению или в чем проблема?
мой код еще можно посмотреть, там как раз идет генерация списка из кортежа.
0
2 / 2 / 1
Регистрация: 13.09.2019
Сообщений: 134
11.11.2019, 19:52  [ТС]
решил пойти другим путем, перегнать результат в словарь, как мне теперь можно решить мою задачку?
Если не сложно на примере?
Как сделать сравнение, если нет пары по "stand", "setting_code" то добавлять эту пару с названием stand, а остальные все заполнить значением
"None"
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
#print("Content-type: text/html\n")
import cx_Oracle
conn = cx_Oracle.connect("Login")
curs = conn.cursor().execute('''select filename as stand,setting_code,setting_kind_code,created_by,date_from,bool_value,is_default,substr(loadid,1,8) AS LOADID from WFCFG_DEV 
where loadid like '%20191019%' UNION all select filename as stand,setting_code,
setting_kind_code,created_by,date_from,bool_value,is_default,substr(loadid,1,8) AS LOADID from WFCFG_RU611 where loadid like '%20191019%' order by setting_code''')
columns = [column[0] for column in curs.description]
print(columns)
['stand','setting_code','setting_kind_code','created_by','date_from','bool_value','is_default','loadid']
results = []
for row in curs.fetchall():
    results.append(dict(zip(columns, row)))
    print(results)
curs.close
conn.close
Добавлено через 48 минут
путаюсь по вашему коду:
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
curs = conn.cursor().execute('''select filename as stand,setting_code,setting_kind_code,created_by,date_from,bool_value,is_default,substr(loadid,1,8) AS LOADID from WFCFG_DEV 
where loadid like '%20191019%' UNION all select filename as stand,setting_code,
setting_kind_code,created_by,date_from,bool_value,is_default,substr(loadid,1,8) AS LOADID from WFCFG_RU611 where loadid like '%20191019%' order by setting_code''')
other = {'RU611':'DEV', 'DEV':'RU611'}
columns = [column[0] for column in curs.description]
print(columns)
['stand','setting_code','setting_kind_code','created_by','date_from','bool_value','is_default','loadid']
results1 = []
for row in curs.fetchall():
    results1.append(dict(zip(columns, row)))
 
pairs = list(map(lambda x: x.split(), results1))
result = []
for index, a_l in enumerate(pairs):
    if index < len(pairs) - 1 and a_l[0] == pairs[index + 1][0]:
        result.append(a_l)
        result.append([other[a_l[0]], None])
    else:
        result.append(a_l)
if (a_l[0] == 'RU611'):
    result.append(['DEV', None])
 
print(result)
в итоге ошибка:

Traceback (most recent call last):
File "C:/site/scripts/sc.py", line 17, in <module>
pairs = list(map(lambda x: x.split(), results1))
File "C:/site/scripts/sc.py", line 17, in <lambda>
pairs = list(map(lambda x: x.split(), results1))
AttributeError: 'dict' object has no attribute 'split'
0
Автоматизируй это!
Эксперт Python
 Аватар для Welemir1
7391 / 4818 / 1246
Регистрация: 30.03.2015
Сообщений: 13,687
Записей в блоге: 29
11.11.2019, 19:57
Цитата Сообщение от Exle Посмотреть сообщение
AttributeError: 'dict' object has no attribute 'split'
все понятно написано. Пока не начнешь осваивать основы так и будешь методом тыка "программировать"
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
11.11.2019, 19:57
Помогаю со студенческими работами здесь

Добавить новый столбец и заполнить значениями из другого столбца
Пишу в VS. Базу смотрю через DB Browser for SQLite. Есть столбец типа TEXT, в нем значения например...

заполнить строку таблицы значениями линии тренда, соответствующими конкретным значениям х
Условие задачи: Даны значения х и у. Например, вот такие: x 1 2 1,3 6 ...

После каждого столбца, все элементы которого положи-тельные, добавить новый столбец и заполнить его нулевыми значениями
Доброго времени суток. Напишите, пожалуйста, прогу для этого задания . ( в нем не должны быть использованы квадратные скобки) Дана...

После каждого столбца, все элементы которого положи-тельные, добавить новый столбец и заполнить его нулевыми значениями
Помогите написать код. Условие - в программе не должно быть никаких квадратных скобок . Как выполнить без массива понятия не имею....

Заполнить каждую строку матрицы значениями полученными при умножении элементов исходного массива на заданное число
Напишите программу для решения следующей задачи в С++ Дан массив array из целых чисел. Создайте матрицу matrix. Заполните каждую...


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

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Опции темы

Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2). Унарный минус обозначается как ! */ #include <iostream> #include <stack> #include <cctype>. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru