2015-04-15 2 views
3

У меня есть запрос, который должен создать экземпляр лицензии и его часть выглядит как это:SQLAlchemy - Невозможно обновить таблицу, используя NULL для значения первичного ключа

license_obj = license_db.License() 
license_db.Session.add(license_obj) 
license_obj.start_date = license['start_date'] 
license_obj.expiry_date = license['expiry_date'] 

Я также добавил отношения license_status и license_status_id что указывает на LicenseStatus модели

Когда я пытаюсь связать значение по умолчанию для license_status_id, как показано ниже:

license_db.license_status_id = int(license_db.LicenseStatus.active().id) 

тогда я получаю сообщение об ошибке:

"Can't update table " 
FlushError: Can't update table using NULL for primary key value 

, но когда я пытаюсь присвоить целое число вручную, как показано ниже, то он работает:

license_db.license_status_id = 1 

Что вызывает проблему?

Если я печатаю license_db.LicenseStatus.active(). Id, тогда я получаю int равным 1, чего я хочу достичь.

ответ

2

Попробуйте добавить license_db.session после того, как вы установите дату окончания лицензии вместо второй строки.

+0

Перемещение license_db.Session.add (лицензионный_объект) до конца кода разрешило мою проблему :) Спасибо! – Efrin

0

На самом деле эта ошибка довольно вводит в заблуждение. Я получил это, и оказывается, что проблема заключается в том, что один из столбцов, помеченных как внешний ключ для другой таблицы, равен нулю. Не тот, который помечен как первичный ключ, это просто внешний ключ.

Смежные вопросы