【发布时间】:2014-01-17 20:32:18
【问题描述】:
我希望我的模型的主键是一个自动递增的整数。这是我的模型的样子
class Region(db.Model):
__tablename__ = 'regions'
id = db.Column(db.Integer, primary_key=True, autoincrement=True)
name = db.Column(db.String(100))
parent_id = db.Column(db.Integer, db.ForeignKey('regions.id'))
parent = db.relationship('Region', remote_side=id, primaryjoin=('Region.parent_id==Region.id'), backref='sub-regions')
created_at = db.Column(db.DateTime, default=db.func.now())
deleted_at = db.Column(db.DateTime)
上面的代码创建了我的表,但没有使id自动递增。因此,如果在我的插入查询中我错过了 id 字段,它会给我这个错误
错误:“id”列中的空值违反非空约束
所以我将id 声明更改为如下所示
id = db.Column(db.Integer, db.Sequence('seq_reg_id', start=1, increment=1),
primary_key=True)
还是同样的错误。上面的代码有什么问题?
【问题讨论】:
-
你能贴出你用来创建区域对象的代码吗?
-
我正在尝试像
INSERT INTO regions(name, ) ...这样的普通sql插入 -
您的原始代码应该可以工作。您确定您实际上是在使用 SQLAlchemy 创建表吗?您确定您正在查看正确的数据库吗?在 SQLAlchemy 中尝试configuring logging,看看使用 SQLAlchemy 创建表时输出的 SQL 是什么。
-
非常好。你的代码是我的解决方案。我一直在寻找如何使用 Oracle 的序列,直到你的帖子。谢谢!
-
还是同样的错误
标签: python postgresql sqlalchemy flask flask-sqlalchemy