|
0 / 0 / 0
Регистрация: 05.04.2019
Сообщений: 27
|
||||||
Id столбец стандартной таблицы - заполнение автоматическое поля id03.02.2025, 16:12. Показов 1369. Ответов 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
Сообщений: 82
|
|
| 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
Сообщений: 82
|
|
| 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
Сообщений: 82
|
|
| 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
Сообщений: 82
|
|
| 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
Как сделать Автоматическое заполнение ключевого поля таблице Автоматическое заполнение поля таблицы Автоматическое заполнение в поля таблицы (формы) Автоматическое заполнение таблицы при обновлении поля штрихкода Автоматическое заполнение данных в поле таблицы при заполнении формы по связанной таблице Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
||||
|
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта
Симптом:
После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
|
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
|
Новый ноутбук
volvo 07.12.2025
Всем привет.
По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне:
Ryzen 5 7533HS
64 Gb DDR5
1Tb NVMe
16" Full HD Display
Win11 Pro
|
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
|
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
|
|
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов
На странице:
https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/
нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
|
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов.
. . .
|
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
|
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
|
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут.
В век Веб все очень привыкли к дизайну Single-Page-Application .
Быстренько разберем подход "на фреймах".
Мы делаем одну. . .
|