|
1 / 8 / 0
Регистрация: 31.07.2016
Сообщений: 73
|
|||||||||||
Многократный поиск в результатах запроса к БД17.08.2016, 07:58. Показов 1867. Ответов 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" и только если они есть выполнить код Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
|
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма).
На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
|
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ *
Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам
Кирхгофа, решает её и находит переходные токи и напряжения на элементах схемы. . . .
|
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым.
Но восстановить их можно так.
Для этого понадобится консольная утилита. . .
|
|
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
|
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11
— это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
|
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11
Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
|
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
|