Форум сайта python.su
![[RSS Feed] [RSS Feed]](/static/djangobb_forum/img/feed-icon-small.png) 
			 
							 0
  0   
								
								Доброго дня!
Наверно, “инфраструктура” слишком громко сказано) 
Интегрировал в проект sqlite бд и создал небольшой модуль реализующий основные действия - CRUD. Теперь встал вопрос об удобстве использование сего в проекте. 
Например, есть таблица с пользователями, для которой есть ряд столбцов: name, nick, role и т.п. 
Для получения инфы из неё есть метод - get_user(name), который возвращает список словарей (где ключ - название столбца, значение - значение) по найденному имени. Из данного словаря по ключу забираем нужное значение. Тут возникает трудность, т.к. с проектом работаю не я один, а другие участники могут не знать структуру базы, да и самому каждый раз лазить, чтобы вспомнить точное название столбца такое себе. Варианта вижу два: 
1. Описать доп. модуль для каждой таблицы, для каждого столбца (решение прямо скажем полное минусов, во-первых, из-за трудоемкости, во-вторых, в случае изменения структуры опять же менять кучу методов)
2. Опять же описать доп.модуль, но описать названия столбцов в виде переменных, в методах уже ими оперировать, решение чуть приятнее и в случае изменения структуры менять только значения переменных. 
Есть ли иные более приятные решения, либо подходящие паттерны? 
Надеюсь все дожили до конца этого трактата)
Отредактировано Artegr (Июль 6, 2019 15:56:35)
Офлайн
 
							 253
  253   
								
								Artegr1 проблема не очень ясна. Приведите пример что вы имеете ввиду под “списком словарей”.
чтобы вспомнить точное название столбца такое себе
info = get_user("вася") >>> list(info.keys()) ["name","nick","role"]
ArtegrА мне ваши решения непонятны. Ну сделали вы модуль. А как это помогает работать?
Есть ли иные более приятные решения,
Отредактировано doza_and (Июль 6, 2019 18:39:04)
Офлайн
 
							 857
  857   
								
								ArtegrТеперь то, насколько легко ты её в своём проекте можешь заменить на другую систему управления базами данных, даже на noSQL, не меняя в своей программе ничего особо, - это и есть показатель того, насколько хорошо написан твой код. Если не можешь и топором вырубить теперь из программы SQLite-базу, то явно у тебя слишком много лишних связей в коде.
Интегрировал в проект sqlite бд и создал небольшой модуль реализующий основные действия - CRUD.
Отредактировано py.user.next (Июль 7, 2019 03:41:47)
Офлайн
 
							 
							
						 221
  221   
								
								Судя по написанному вы хотите ORM, как примерdoza_and уже озвучил SQLAlchemy
Офлайн
 
							 0
  0   
								
								py.user.next
То, что тебе нужно куда-то там лазить и другим нужно понимать структуру базы данных, чтобы ей пользоваться, говорит о том, что не слишком правильно ты код написал. Ты должен сделать интерфейсы, а уже к какой СУБД они будут привязаны, никого не должно волновать; они должны просто пользоваться твоей программы, даже не зная, какая там база и с какой структурой под капотом.
Офлайн
![[RSS Feed] [RSS Feed]](/static/djangobb_forum/img/feed-icon-small.png)