Мой сценарий выглядит следующим образом (в MySQL) У меня есть таблица say table 1, которая имеет 2 столбца:
userID, column_acess
Таблица 2, в которой есть список столбцов: col1, col2, col3 и т.д.
Теперь то, что я хотел бы сделать, это использовать pymySQL для запроса таблицы 1 для столбцов, которые разрешен конкретному идентификатору пользователя, путем проверки столбца acess (который будет содержать разделенный запятыми список столбцов в tabl2) и использовать этот результат в другом запросе sql (который работает на table2), чтобы фактически получить данные из соответствующих столбцов, которым разрешен пользователь.
Поэтому, по сути, мне хотелось бы что-то вроде:
Выберите (выберите column_acess из tabl1, где user_ID = '123') из таблицы2
Поэтому внутренний запрос должен возвращать список столбцов, например col1, col2, который будет использоваться для выбора столбцов во внешнем запросе в таблице2
Как это сделать в mySQL?
MySQL поддерживает предоставление привилегий на уровне столбцов пользователям, используя стандартную инструкцию grant
.
Я бы посоветовал начать с документации по этому вопросу.
Альтернативой использованию grant
для столбцов является создание представлений для разных типов пользователей. Это, по сути, более общее решение, поскольку представления могут фильтровать строки, а также столбцы. Идея состоит в том, что базовые таблицы не доступны напрямую. Представления выглядят так, поэтому весь доступ должен проходить через представления.
Я настоятельно рекомендую вам тоже прочитать этот пост. Вы должны либо сначала хранить столбцы в переменной, либо использовать динамический SQL-запрос. Используйте результат SELECT как имя COLUMN в другом SELECT
Кстати, ваша схема даже не в 1 NF, так как у вас нет атомных значений в таблице 1. Вам следует избегать этого.