Python 通过SQLAlchemy模型插入时不要插入主键
我在测试SQLAlchemy+Flask+Postgres应用程序时出错。在我编写的API端点上执行POST时,我在命令行中看到以下错误: sqlalchemy.exc.ProgrammingError:(psycopg2.errors.GeneratedAlways)无法插入列“rs\u id” 它似乎正在尝试执行以下操作: SQL:在ref_status(rs_id,rs_status_name)值(nextval('status_id_seq'),%(rs_status_name)中插入返回ref_status.rs_id 模型:Python 通过SQLAlchemy模型插入时不要插入主键,python,postgresql,sqlalchemy,Python,Postgresql,Sqlalchemy,我在测试SQLAlchemy+Flask+Postgres应用程序时出错。在我编写的API端点上执行POST时,我在命令行中看到以下错误: sqlalchemy.exc.ProgrammingError:(psycopg2.errors.GeneratedAlways)无法插入列“rs\u id” 它似乎正在尝试执行以下操作: SQL:在ref_status(rs_id,rs_status_name)值(nextval('status_id_seq'),%(rs_status_name)中插入返
class Status(Base):
__tablename__ = "ref_status"
id = Column(Integer, Sequence('status_id_seq'), name="rs_id", primary_key=True)
name = Column(String, name="rs_status_name")
def __repr__(self):
return f"<Status name={self.name} id={self.id} />"
def to_dict(self):
return {
"id": self.id,
"name": self.name,
}
API端点:
if request.method=="POST":
name = request.form['name']
if len(name) == 0:
return "Invalid name", 400
status = Status(name=name)
sesh.add(status)
sesh.commit()
return jsonify({
"result":True,
"id": status.id,
"name": name
})
当仍然插入记录并且主键被序列值填充时,如何避免此错误?我试着用谷歌搜索错误,但我还没有找到一个适合我的情况的解决方案。我的Google fu今天很弱…我从模型中的
列定义中删除了序列。不要创建一个自动生成的identody字段,将其设置为单个整数。如果您的id来自另一方,我不明白为什么要创建一个自动生成的列。
if request.method=="POST":
name = request.form['name']
if len(name) == 0:
return "Invalid name", 400
status = Status(name=name)
sesh.add(status)
sesh.commit()
return jsonify({
"result":True,
"id": status.id,
"name": name
})