|
1 / 8 / 0
Регистрация: 31.07.2016
Сообщений: 73
|
|||||||||||
Многократный поиск в результатах запроса к БД17.08.2016, 07:58. Показов 1934. Ответов 8
Метки базы данных (Все метки)
Дано: list of typles, полученный из базы данных с помощью метода cursor.fetchall из пакета mysql.connector.
То есть примерно такая структура данных: [ {'animal': 'Тигр', 'kind': 'хищник', 'dimension': 'крупный', ...}, {'animal': 'Медведь', 'kind': 'хищник', 'dimension': 'крупный', ...}, {'animal': 'Зубр', 'kind': 'травоядный', 'dimension': 'крупный', ...}, {'animal': 'Мышь', 'kind': 'грызун', 'dimension': 'мелкий', ...}, ...] В ней надо провести многократный быстрый поиск в определенной колонке с последующим позиционированием на строке, в которой это значение найдено (надо будет проверить значения других ячеек в этой строке). Пока вижу следующие способы этот поиск организовать:
0
|
|||||||||||
| 17.08.2016, 07:58 | |
|
Ответы с готовыми решениями:
8
Многократный поиск в Edit Кракозябры в результатах запроса Многократный поиск изображения в изображении |
|
|
||||||
| 17.08.2016, 08:09 | ||||||
|
ОМГ....
Вы не указали, что такое list1, list2, mylist и т. д. Не указали, что надо найти. Так что остаётся только предполагать. Я не работал со связкой python+mysql, но из того, что я вижу, напрямую вытекает такое решение "в лоб":
Сервер сам у себя всё, как надо, оптимизирует, он умный. (Но на всякий случай указываю - ему надо помочь, сделать в базе индексы.)
0
|
||||||
|
1 / 8 / 0
Регистрация: 31.07.2016
Сообщений: 73
|
|||||||||
| 17.08.2016, 08:28 [ТС] | |||||||||
|
list2 - изначально пустой список, который создается в 4 строке второго примера, далее в него помещаются значения первой колонки результата запроса. Вот второй пример, теперь - с дополнительными комментариями:
0
|
|||||||||
|
|
||||||||||
| 17.08.2016, 09:10 | ||||||||||
|
somnium, вы много говорите о вашем коде, КАК вы делаете, но ничего о том, ЧТО вам нужно получить.
Опишите, что нужно найти. Пока я понял так, что вам надо найти те строки из запроса, где животное находится в списке list1. Сам list1 получаем откуда-то. Задача как раз для WHERE. Но вы лучше опишите задачу сами. Для WHERE есть возможность комбинации условий (OR). Есть возможность ссылаться и делать поиск в других таблицах (IN). Впрочем, тут я уже не силён, давно с sql-ем последний раз работал, но помню, что есть. Пока я вижу такое лобовое решение без SQL - вместо list1 делаем множество (set), назовём его animals_needed, и вот так:
0
|
||||||||||
|
2742 / 2341 / 620
Регистрация: 19.03.2012
Сообщений: 8,830
|
|
| 17.08.2016, 09:11 | |
|
somnium, судя по всему тебе нужно создать хранимую процедуру, которая будет выбирать нужные данные и будет отдвать только то, что тебе нужно или же запрашивай большой кусок данных и парси его в программе. Тут не существует правильного ответа, все зависит от ситуации.
0
|
|
|
1 / 8 / 0
Регистрация: 31.07.2016
Сообщений: 73
|
||
| 17.08.2016, 09:45 [ТС] | ||
|
Есть список list1 с наименованиями животных, примерно такой: ['Тигр', 'Медведь', 'Лиса', ...], размер - максимум 200 элементов Есть list of typles (насколько понял - список именованных кортежей) mylist с результатами запроса к БД, структура его такая: [ {'animal': 'Тигр', 'kind': 'хищник', 'dimension': 'крупный', ...}, {'animal': 'Медведь', 'kind': 'хищник', 'dimension': 'крупный', ...}, {'animal': 'Зубр', 'kind': 'травоядный', 'dimension': 'крупный', ...}, {'animal': 'Мышь', 'kind': 'грызун', 'dimension': 'мелкий', ...}, ...] строк в mylist - тоже максимум 200. Задача: в цикле по list1 отыскивать строку mylist с таким же зверем Зачем это делается: 1) удостовериться, что в mylist есть такой зверь 2) проверить инфу в других ячейках найденной таким образом строчки (typle) из mylist. Почему я против запроса внутри внешнего цикла по list1 - уже написал. 200 раз долбать базу однострочными запросами - как-то не очень, ведь база лежит на диске, а чтение данных с диска - операция очень медленная.
0
|
||
|
|
|||||||
| 17.08.2016, 09:56 | |||||||
|
Если без SQL - то можно сделать, к примеру, словарь. Ключ - животное, значение - сколько раз встречается. (На самом деле, это вариация на тему уже предложенного множества.)
Как видите, кажущаяся потребность в цикле по list1 отпадает. Думаю, так же отпадёт и "долбание базы однострочными запросами". Будет один красивый запрос. Впрочем, я об этом уже сказал.
1
|
|||||||
|
317 / 268 / 61
Регистрация: 12.10.2011
Сообщений: 434
|
|||||||||||||||||||||||||||
| 17.08.2016, 10:27 | |||||||||||||||||||||||||||
|
Кликните здесь для просмотра всего текста
table_a
table_b
Кликните здесь для просмотра всего текста
res
1
|
|||||||||||||||||||||||||||
|
1 / 8 / 0
Регистрация: 31.07.2016
Сообщений: 73
|
|||
| 17.08.2016, 10:42 [ТС] | |||
|
Наверное, сделаю первым способом, который вы предложили:
0
|
|||
| 17.08.2016, 10:42 | |
|
Помогаю со студенческими работами здесь
9
БД об результатах сессии, поиск студентов. Вывод ссылки в результатах поиска (Умный поиск) Сведения о результатах сессии: ввод данных, хранение, поиск Как сделать проверку на наличие данных в результатах запроса "q" и только если они есть выполнить код Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2.
Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива.
Было так:. . .
|
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2.
Задача: реализовать контроль корректности заполнения дат назначения. . .
|
Архитектура слоя интернета для сервера-слоя.
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
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои.
А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
|