использовать имена столбцов из внутреннего запроса, выбрать столбцы для отображения во внешнем запросе

0

Мой сценарий выглядит следующим образом (в 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?

Теги:
python-3.x
pymysql

2 ответа

0

MySQL поддерживает предоставление привилегий на уровне столбцов пользователям, используя стандартную инструкцию grant.

Я бы посоветовал начать с документации по этому вопросу.

Альтернативой использованию grant для столбцов является создание представлений для разных типов пользователей. Это, по сути, более общее решение, поскольку представления могут фильтровать строки, а также столбцы. Идея состоит в том, что базовые таблицы не доступны напрямую. Представления выглядят так, поэтому весь доступ должен проходить через представления.

0

Я настоятельно рекомендую вам тоже прочитать этот пост. Вы должны либо сначала хранить столбцы в переменной, либо использовать динамический SQL-запрос. Используйте результат SELECT как имя COLUMN в другом SELECT

Кстати, ваша схема даже не в 1 NF, так как у вас нет атомных значений в таблице 1. Вам следует избегать этого.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню