我尝试使用序列创建一个带有id
列的表,但是失败了。
这是我的代码段:
from sqlalchemy import (TEXT, Boolean, Column, Date, DateTime,
ForeignKey, Integer, Sequence, SmallInteger, String,
UniqueConstraint)
class group(Base):
__tablename__ = 'group'
id = Column(SmallInteger, Sequence('group_id'), primary_key=True)
title = Column(String, unique=True, nullable=False)
sorting = Column(SmallInteger, nullable=False, index=True)
active = Column(Boolean, nullable=False, index=True, default=True)
生成的表是这样的,但没有顺序:
CREATE TABLE group (
id SMALLINT NOT NULL,
title VARCHAR NOT NULL,
sorting SMALLINT NOT NULL,
active BOOLEAN NOT NULL,
PRIMARY KEY (id),
UNIQUE (title)
)
CREATE INDEX ix_group_sorting ON group (sorting)
CREATE INDEX ix_group_active ON group (active)
因此,如果我尝试将数据插入表中,则会显示错误消息:
sqlalchemy.exc.InternalError: (psycopg2.errors.InternalError_) missing "id" primary key column
如何使用Sequence成功创建带有列的表?
sqlalchemy版本:1.0.14
python版本:3.6.6
谢谢。