Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.92/13: Рейтинг темы: голосов - 13, средняя оценка - 4.92
 Аватар для father_igni
1 / 1 / 1
Регистрация: 08.03.2015
Сообщений: 127

Присвоение значений переменных или ссылки

06.01.2016, 23:30. Показов 2846. Ответов 11
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Чем занимаюсь - парсю XML, с последующей записью определенной информации в базу (для простоты пусть будет SQLite)

Есть некоторые вспомогательные переменные, которые, чтобы уменьшить их количество, я загнал в одну

т.е.:
Python
1
2
db.execute(' SELECT id FROM table1 WHERE name1 = ?', (var1,))
id = db.fetchone()[0]
потом пару строк кода в котом используется значение присвоенное переменной id

далее:
Python
1
2
db.execute(' SELECT id FROM table2 WHERE name2 = ?', (var2,))
id = db.fetchone()[0]
и опять строчки кода..

и т.д.

в результате значения переменной id равно во всех "точках" программы и равно значению присвоенное "последней строчкой"

что я делаю не так?
ПС если каждую переменную id заменить на "уникальную" id1, id2 и т.д. то вроде работает..
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
06.01.2016, 23:30
Ответы с готовыми решениями:

Enum перечисление переменных и присвоение им значений
добрый день, работаю в среде qt, застала проблема в оптимизации кода, хочу перечислить переменные и присвоить им значение из списка ...

Присвоение и передача значений static переменных в классе
Как правильно передать значения SalesPlan и NumOfSales в класс PlanCompletion? При использовании приведенного ниже кода, передаваемое...

Передача значений переменных или ссылок, неконтролируемое изменение переменных
// заголовок класса ObservableCollection<LineDom> Method1; Method1 = new ObservableCollection<LineDom>(); ...

11
Эксперт Python
 Аватар для dondublon
4653 / 2073 / 366
Регистрация: 17.03.2012
Сообщений: 10,183
Записей в блоге: 6
11.01.2016, 10:04
Значит, данные такие.
0
 Аватар для father_igni
1 / 1 / 1
Регистрация: 08.03.2015
Сообщений: 127
11.01.2016, 12:33  [ТС]
в этом же весь фокус... если меняем имена переменных на уникальные, то их значения различаются, как и должно быть
0
 Аватар для pashtet-kun
135 / 120 / 37
Регистрация: 30.09.2012
Сообщений: 400
11.01.2016, 13:07
А в чём вопрос-то?
0
 Аватар для father_igni
1 / 1 / 1
Регистрация: 08.03.2015
Сообщений: 127
11.01.2016, 13:18  [ТС]
вопрос в не понимании "присваивания" и/или "ссылок"
в данном случае переменной id присваивается значение...
потом переприсваеивается
потом еще раз переприсваивается...

Но! в любой момент выполнения кода (в любой его точке) значение переменной id соответствует присвоенному в самом конце (даже до выполнения этого присвоения)
это вводит меня в ступор
0
2742 / 2341 / 620
Регистрация: 19.03.2012
Сообщений: 8,830
11.01.2016, 13:33
father_igni, ты засунул значения в айдишников в БД !?
Цитата Сообщение от father_igni Посмотреть сообщение
id = db.fetchone()[0]
Кстати id это встроенная функция и нельзя ее перекрывать своим значением!
1
 Аватар для father_igni
1 / 1 / 1
Регистрация: 08.03.2015
Сообщений: 127
11.01.2016, 14:50  [ТС]
во! сейчас попробуем другую переменную

а в чем проблема АйДи в БД... это есть первичный ключ в моем случае
0
2742 / 2341 / 620
Регистрация: 19.03.2012
Сообщений: 8,830
11.01.2016, 15:11
father_igni, Возможно я тебя не правильно понял, но мне показалось, что значения своих переменных ты заснул в бд (если это так, то это треш дикий).
В общем проясни момент с тем куда ты положил значения переменных. Покажи этот кусок кода.
0
 Аватар для father_igni
1 / 1 / 1
Регистрация: 08.03.2015
Сообщений: 127
11.01.2016, 15:34  [ТС]
Python
1
2
3
4
5
6
7
8
for st in json_data:
    db.execute('INSERT OR IGNORE INTO User (name) VALUES (?)', (st[0],))
    db.execute('INSERT OR IGNORE INTO Course (title) VALUES (?)', (st[1],))
    db.execute('SELECT id FROM User WHERE name = ?', (st[0],))
    id_user = db.fetchone()[0]
    db.execute('SELECT id FROM Course WHERE title = ?', (st[1],))
    id_course = db.fetchone()[0]
    db.execute('INSERT OR IGNORE INTO Member (user_id, course_id, role) VALUES (?,?,?)', (id_user, id_course, st[2],))
вставляем запись в одну таблицу, берем свежеприсвоенный АйДи чтобы сослаться на эту запись в следующей табличке и т.д.
0
2742 / 2341 / 620
Регистрация: 19.03.2012
Сообщений: 8,830
11.01.2016, 15:38
Цитата Сообщение от alex925 Посмотреть сообщение
это треш дикий
БД не для того используют, ты сейчас занимаешься тем, что чешешь спину мотыгой.
БД используется для долговременного хранения каких-то данных, для обмена информацией между разными приложениями и т д, а не для того, чтобы хранить там значения переменных.

Для того, что не плодить 100500 переменных, существуют различные коллекции и структуры данных (массивы, списки, кортежи, словари и т д).
0
 Аватар для father_igni
1 / 1 / 1
Регистрация: 08.03.2015
Сообщений: 127
11.01.2016, 15:39  [ТС]
ой, не тот код, но идея та же

не, id-переменные я не загоняю в базу
они нужны в программе, чтобы вставлять записи с корректными ссылками на другие записи, все.
0
 Аватар для pashtet-kun
135 / 120 / 37
Регистрация: 30.09.2012
Сообщений: 400
11.01.2016, 16:11
Попробуй после инсертов сделать коммит, чтобы данные действительно сохранились в БД:
Python
1
2
3
4
db.execute('INSERT OR IGNORE INTO User (name) VALUES (?)', (st[0],))
db.execute('INSERT OR IGNORE INTO Course (title) VALUES (?)', (st[1],))
conn.commit()
db.execute('SELECT id FROM User WHERE name = ?', (st[0],))
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
11.01.2016, 16:11
Помогаю со студенческими работами здесь

CSS - id или class с инкриментом или присвоение значений общему class\id
Добрый день. Что то и сформулировать тяжело было. Лучше на примере объясню. К примеру, у меня есть общий id "element" и у...

Замена списка переменных вектором, или трансляция значений из вектора
Здравствуйте форумчане, очень срочно нужна помощь. Возникла такая интересная проблема, можно ли как-то заменить в функции список...

Множественное присвоение переменных
Здравствуйте. Возникла задача присвоить сразу большое количество переменных, например: = ; a => 1 b => 2 c => 3 ...

Составить программу позволяющую установить истинность или ложность высказывания для различных значений переменных
Буду искренне благодарен :) Условие приложил)

Составить программу, позволяющую установить истинность или ложность высказывания для различных значений переменных
Для приведенного ниже высказывания записать эквивалентное ему выражение на языке Python. Составить программу, позволяющую установить...


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

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
Архитектура слоя интернета для сервера слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru