Уведомления

Группа в Telegram: @pythonsu

#1 Окт. 17, 2017 07:03:01

Cenzor
Зарегистрирован: 2017-10-11
Сообщения: 6
Репутация: +  0  -
Профиль   Отправить e-mail  

Оптимизация кода в python: извлечение строк из запроса к БД

Здравствуйте. Используя библиотеку psycopg2 из БД (postgresql) я извлёк несколько строк с данными.

 cur.execute(querry)
К примеру, содержимое строк следующее:
 >>for row in cur:
    row[0]+" "+row[1]
Иванов Москва
Петров Пенза
Сидоров Волгоград
Кузнецов Смоленск
Теперь вопрос: как мне не прогоняя весь цикл, сразу из курсора можно извлечь 3 строку “Сидоров Волгоград”, не прибегая к повторному запросу к БД для извлечения именно нужной записи?

Офлайн

#2 Окт. 17, 2017 07:19:58

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

Оптимизация кода в python: извлечение строк из запроса к БД

тут лучше оптимизировать запросы к БД

 select user_name,town from my_table where user_name='Сидоров'
а если выбираешь все, а потом делаешь фильтрацию то зря грузишь и БД и клиента

Отредактировано vic57 (Окт. 17, 2017 07:21:29)

Офлайн

#3 Окт. 17, 2017 08:05:16

Cenzor
Зарегистрирован: 2017-10-11
Сообщения: 6
Репутация: +  0  -
Профиль   Отправить e-mail  

Оптимизация кода в python: извлечение строк из запроса к БД

vic57
тут лучше оптимизировать запросы к БД
Я объясню.
Пользователь хочет найти в справочнике нужного ему человека, в БД присутствует поиск по фамилии, пользователь вводит фамилию - выводятся найденные записи, в которых фамилия соответствует запросу, например “Иванов”
Пользователю выводится информация, например:
Иванов Семён Москва
Иванов Пётр Санкт-Петербург
Ивано Степан Вологда

Пользователь идентифицирует по этим полям нужного Иванова, выбирает его и ему предоставляются вся информация по этой записи. Вот как раз эту информацию я и хочу вытянуть в уже имеющемся массиве данных cursor (в нём уже есть эти 3 строки со всеми полями)

Отредактировано Cenzor (Окт. 17, 2017 08:05:45)

Офлайн

#4 Окт. 17, 2017 09:03:09

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Оптимизация кода в python: извлечение строк из запроса к БД

Cenzor

В таблице у вас обязательно должно быть поле (или набор полей) Primary Key, однозначно идентифицирующее запись. Как правило это автоинкрементное Long поле. Вам надо получить это поле вместе с остальными в первом запросе, а потом использовать его для выборки детализации.



Офлайн

#5 Окт. 17, 2017 10:26:09

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

Оптимизация кода в python: извлечение строк из запроса к БД

Cenzor
если вы получаете массив поиск по любому будет циклом, это основы программирования

 out = [ i for i in cur if i[0] == 'Сидоров' and i[1] == 'Волгоград']

Офлайн

#6 Окт. 17, 2017 13:45:26

Cenzor
Зарегистрирован: 2017-10-11
Сообщения: 6
Репутация: +  0  -
Профиль   Отправить e-mail  

Оптимизация кода в python: извлечение строк из запроса к БД

vic57
Cenzorесли вы получаете массив поиск по любому будет циклом, это основы программирования
спасибо, но у вас используется генератор списка, в котором в свою очередь используется цикл, это основы программирования

Отредактировано Cenzor (Окт. 17, 2017 13:45:45)

Офлайн

#7 Окт. 17, 2017 21:14:09

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

Оптимизация кода в python: извлечение строк из запроса к БД

ну так в любом случае в основе - массивы, циклы, указатели. все остальное - обертки

Офлайн

#8 Окт. 18, 2017 01:03:33

Cenzor
Зарегистрирован: 2017-10-11
Сообщения: 6
Репутация: +  0  -
Профиль   Отправить e-mail  

Оптимизация кода в python: извлечение строк из запроса к БД

ну тут в явном виде цикл используется.
Мне вод подсказывают, цитирую “ у объекта курсора есть метод fetchall(), которым вы можете выгрузить его содержимое в список и дальше уже к нему обращаться по индексу.”
Видимо, это лучший вариант

Офлайн

#9 Окт. 18, 2017 07:45:59

Shaman
Зарегистрирован: 2013-03-15
Сообщения: 1369
Репутация: +  88  -
Профиль   Отправить e-mail  

Оптимизация кода в python: извлечение строк из запроса к БД

Cenzor
не прибегая к повторному запросу к БД для извлечения именно нужной записи?
Нужную запись между запросами могут подправить?

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version