【问题标题】:SQLAlchemy - Can't update table using NULL for primary key valueSQLAlchemy - 无法使用 NULL 作为主键值更新表
【发布时间】:2015-04-15 09:55:08
【问题描述】:

我有一个查询,它应该创建一个许可证实例,它的一部分看起来像这样:

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']

我还添加了指向 LicenseStatus 模型的 license_status 关系和 license_status_id

当我尝试为 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 equal 1 这是我想要实现的。

【问题讨论】:

    标签: python sqlalchemy


    【解决方案1】:

    在设置许可结束日期后尝试添加license_db.session,而不是第二行。

    【讨论】:

    • 将 license_db.Session.add(license_obj) 移到代码末尾解决了我的问题 :) 谢谢!
    【解决方案2】:

    其实这个错误是很误导人的。 我得到了这个,事实证明问题是标记为另一个表的外键的列之一为空。不是标记为主键的那个,它只是一个外键。

    【讨论】:

      猜你喜欢
      • 2017-12-30
      • 2019-04-20
      • 2015-09-24
      • 2019-12-16
      • 2019-10-29
      • 2012-07-16
      • 2020-03-04
      • 2015-01-26
      • 1970-01-01
      相关资源
      最近更新 更多