|
0 / 0 / 0
Регистрация: 05.04.2019
Сообщений: 27
|
||||||
Id столбец стандартной таблицы - заполнение автоматическое поля id03.02.2025, 16:12. Показов 1430. Ответов 9
Метки нет (Все метки)
Коллеги, начал пробовать простую задачку на связке QT + PostgeSQL
Сначала создал простую таблицу с уникальным машинным ID : id bigint NOT NULL GENERATED ALWAYS AS IDENTITY ( INCREMENT 1 START 1 MINVALUE 1 MAXVALUE 9223372036854775807 CACHE 1 ) ... CONSTRAINT spr_firm_pkey PRIMARY KEY (id) потом стал пробовать добавлять в нее данные через QTableView + QtSql.QSqlTableModel схематично выглядит так примерно
т.е. нужно задать значение id в программе и отключать, соответственно, в свойствах поля INCREMENT .. пробовал разные варианты, но запись сохраняется только в случае, если значение id задаешь вручную и отключив первычный ключ.. не могу понять, как все-таки это делать правильно? Как настроить поле для id, чтобы это поле заполнялось автоматически сервером ? (вообще не ожидал здесь проблемы, в учебных уроках так все красиво)
0
|
||||||
| 03.02.2025, 16:12 | |
|
Ответы с готовыми решениями:
9
Автоматическое заполнения поля по 2 параметрам разных таблиц Автоматическое заполнение полей 2 таблиц с распределением из данных поля одной таблицы
|
|
74 / 18 / 6
Регистрация: 18.01.2025
Сообщений: 83
|
|
| 04.02.2025, 08:14 | |
|
Не совсем понятно. Если id автогенерируется в БД, зачем его вставлять?
0
|
|
|
0 / 0 / 0
Регистрация: 05.04.2019
Сообщений: 27
|
|
| 04.02.2025, 10:20 [ТС] | |
|
Именно в этом вопрос, - как добавить запись через insertRecord (например), чтобы команда добавления сработала корректно.
У меня не получается это сделать, - только если поле id создавать вручную. Каким должно быть поле id , чтобы оно автозаполнялось корректно ? По идее - не должно быть проблем, но у меня не получается, спрашиваю, как .... Добавлено через 1 минуту главная проблема, - нет пока опыт работы PSQL Добавлено через 8 минут т.е. в примере выше, если убрать строку r.setValue("id", id) то команда все равно не сработает, если стоит not null не понимаю, как настроить свойства поля или эту команду, что выполнялось создание записи с автозаполнением id
0
|
|
|
74 / 18 / 6
Регистрация: 18.01.2025
Сообщений: 83
|
|
| 04.02.2025, 12:16 | |
|
xkein, id - вставлять вообще не нужно, никаким образом. Или возможно, я не конца все-таки понимаю суть проблемы.
0
|
|
|
5393 / 1465 / 513
Регистрация: 31.05.2012
Сообщений: 5,153
|
|
| 04.02.2025, 12:52 | |
|
может проблема в том что QSqlTableModel не понимает этого? возможно им как то можно управлять что бы понял
Добавлено через 10 минут мельком посмотрел на QSqlTableModel - там у record есть же методы и свойства для решения этой проблемы
0
|
|
|
0 / 0 / 0
Регистрация: 05.04.2019
Сообщений: 27
|
|
| 04.02.2025, 13:15 [ТС] | |
|
Проблема в том, что не получается вставить запись.
Я не знаю, какие нужно установить свойства id поля, чтобы можно было добавлять записи через модель, не задавая id вручную. Или как по-другому добавлять записи - сама команда должна как-то иначе запускаться ... может быть есть ссылка на статью об этом ... Добавлено через 7 минут да, может быть и в этом - в методах модели. если точнее - у меня нет соответствия использованного метода модели для добавления и свойствам столбца id в PSQL пытаюсь понять направление поисков .. я взял структуру кода и примера, где были в таблице были простые поля, без id этот код и работает, если id сделать простым полем, без свойств первичного ключа т.е. вопрос в более общем смысле - дополнение записей в таблицу, где есть id not null и автозаполнение ... Добавлено через 2 минуты это мой практически первый (учебный) опыт с PSQL , да и с QSqlTableModel
0
|
|
|
74 / 18 / 6
Регистрация: 18.01.2025
Сообщений: 83
|
|
| 04.02.2025, 13:20 | |
|
Так запись id не получается вставить, потому что в бд само генерируется это id. Нужно в модели убрать генерацию id. Видимо как-то так:
modelSql.setGenerated(modelSql.fieldinde x("id"), false)
1
|
|
|
0 / 0 / 0
Регистрация: 05.04.2019
Сообщений: 27
|
|
| 04.02.2025, 13:41 [ТС] | |
|
спасибо!
вставил в тоже место перед добавлением записи, получается вот такой рантайм: AttributeError: 'PySide6.QtSql.QSqlTableModel' object has no attribute 'setGenerated' может, как-то по другому можно пробросить генерацию в модель ? Добавлено через 3 минуты чтобы вместо r.setValue("id", id) метод модели понимал генерацию сервером modelSql.setGenerated(modelSql.fieldinde x("id"), False)
0
|
|
|
74 / 18 / 6
Регистрация: 18.01.2025
Сообщений: 83
|
|
| 04.02.2025, 13:48 | |
|
xkein, далее затрудняюсь ответить.
0
|
|
|
0 / 0 / 0
Регистрация: 05.04.2019
Сообщений: 27
|
||||||||||||||||
| 04.02.2025, 13:51 [ТС] | ||||||||||||||||
|
в работающем примере, который был сделан для SqLigt, столбец id_nsi - "полноценный" id
и все работает. я пробую этот же практически код на PostgreSQL и добавление происходит только при ручном задании id, я просто поменял название драйвера в коде из примера
и подставил свою базу...
0
|
||||||||||||||||
| 04.02.2025, 13:51 | |
|
Помогаю со студенческими работами здесь
10
Как сделать Автоматическое заполнение ключевого поля таблице Автоматическое заполнение поля таблицы Автоматическое заполнение в поля таблицы (формы) Автоматическое заполнение таблицы при обновлении поля штрихкода Автоматическое заполнение данных в поле таблицы при заполнении формы по связанной таблице Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Символьное дифференцирование
igorrr37 13.02.2026
/ *
Программа принимает математическое выражение в виде строки и выдаёт его производную в виде строки и вычисляет
значение производной при заданном х
Логарифм записывается как: (x-2)log(x^2+2) -. . .
|
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
|
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу,
и светлой Луне.
В мире
покоя нет
и люди
не могут жить в тишине.
А жить им немного лет.
|
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила»
«Время-Деньги»
«Деньги -Пуля»
|
|
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога
Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
|
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога
Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
|
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога
Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
|
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
|