Я работаю над веб-приложением в Python (Flask), которое по сути показывает пользовательскую информацию из базы данных PostgreSQL (через Flask-SQLAlchemy) в случайном порядке, причем каждый набор информации отображается на одной странице. Нажатие кнопки «Далее» направит пользователя к следующему набору данных, заменив все данные на странице новыми данными и т. Д.Лучший способ показать случайные данные пользователя из базы данных SQL?
Мою головоломку представляет собой презентацию по-настоящему случайной - не отображая пользователя одну и ту же информацию дважды, запоминая, что они видели, и не показывает им уже увиденные наборы данных.
Сайт не имеет пользовательской системы, и «уже увиденные» наборы данных следует забыть, когда они закрывают вкладку/окно или перемещаются.
Я также должен добавить, что я новичок в SQL в целом.
Каков наилучший способ для этого?
@MarkRichman - Я не думаю, что это дубликат, так как я ищу случайную строку, которую пользователь еще не видел, а не только любую случайную строку. Я также использую SQLAlchemy, в отличие от реального SQL, для выполнения запросов –
_My conundrum поставляется с созданием презентации по-настоящему случайным - не отображая пользователю одну и ту же информацию дважды, помня, что они видели, и не показывает им уже увиденные наборы данных снова. _ Просто nitpick: по определению вы делаете свои данные МЕНЬШЕ случайными, делая это.Возможно, это то, что вам нужно для вашего приложения, но вы бросаете людей, когда говорите, что пытаетесь сделать вещи _truly_ случайными, а затем описывайте что-то, что является _less_ случайным, чем просто выбор любого элемента. –
Как сказал @MarkHildreth, то, что вы ищете, на самом деле не случайное. Тогда я бы спросил, нужно ли вам в качестве сложного решения для вашего варианта использования. Во-первых, как вы индексируете данные? Если это обычный автоматический индекс, начинающийся с 1, вы можете просто сохранить свой последний (также самый высокий индекс) и сделать случайное число в этом диапазоне. Пример: 'random_id = str (random.randint (1, latest_id))' then' SELECT * FROM data WHERE id = random_id'. Это будет немного быстрее, чем «заказ от RAND». Я считаю, что вы можете запросить последний идентификатор, когда началась фляга, и сохраните ее в памяти, а затем обновите ее, когда это необходимо. – Seberius