Форум сайта python.su
Пробую сделать универсальный редактор БД. Возник вопрос как работать если попадется не стандартная таблица в которой нет уникального первичного ключа?
То есть например я пытаюсь изменить 1 из значений в таблице, но как мне найти его в базе?
P.S. Пытаюсь сделать нечто вроде того, что есть в средах от jetbrains, где можно подключиться к базе и в табличном режиме менять данные в ячейках.
Офлайн
alexander4это есть в примерах PyQt в в разделе sql - элементарные модели
можно подключиться к базе и в табличном режиме менять данные в ячейках.
Офлайн
> как работать если попадется не стандартная таблица в которой нет уникального первичного ключа
Первичный ключь должен быть в любом случае. Может не быть поля id, тогда нужно использовать естественный ключь.
Офлайн
Rodegast
> как работать если попадется не стандартная таблица в которой нет уникального первичного ключаПервичный ключь должен быть в любом случае. Может не быть поля id, тогда нужно использовать естественный ключь.
Отредактировано Slow (Ноя. 8, 2017 23:49:36)
Офлайн
> В общем случае, в некоторых РСУБД всё же можно создать таблицы без первичного ключа.
Можно практически во всех, но это не значит что СУБД не сможет однозначно идентифицировать строки таблицы. Как ты правильно заметил Postgres использует для этого OID, а например Sqlite использует rowid. Вот эти идентификаторы и могут выступать в качестве первичного ключа.
Но может быть и другой подход. С точки зрения модели данных всегда найдётся множество столбцов которое будет однозначно идентифицировать данные (заметь именно данные, а не строки которые могут дублироваться) в таблице. Такой подход часто используется в универсальных инструментах для работы с СУБД, например в DBeaver-е.
Отредактировано Rodegast (Ноя. 9, 2017 11:17:28)
Офлайн