SQLAlchemy-查找小于指定值的最高值
我有一个SQLAlchemy模型,其中包含一个产品列表。除了主键之外,每个产品都分配了一个顺序数字产品标识符(prod_id) 保留大于等于10000的产品id值 因此,当添加新产品时,我需要为其分配下一个可用的产品id,该id应比当前最高的产品id大1,忽略任何>9999 我可能可以在SQL中构造一些东西,但我正在努力形成一个将返回该值的SQLAlchemy查询 我不担心比赛条件-这是一个简单的例子来说明问题 模型:SQLAlchemy-查找小于指定值的最高值,sqlalchemy,flask-sqlalchemy,Sqlalchemy,Flask Sqlalchemy,我有一个SQLAlchemy模型,其中包含一个产品列表。除了主键之外,每个产品都分配了一个顺序数字产品标识符(prod_id) 保留大于等于10000的产品id值 因此,当添加新产品时,我需要为其分配下一个可用的产品id,该id应比当前最高的产品id大1,忽略任何>9999 我可能可以在SQL中构造一些东西,但我正在努力形成一个将返回该值的SQLAlchemy查询 我不担心比赛条件-这是一个简单的例子来说明问题 模型: 类产品(db.Model): __tablename_uu=‘产品’ id=
类产品(db.Model):
__tablename_uu=‘产品’
id=db.Column(db.Integer,主键=True)
name=db.Column(db.String(64))
prod_id=db.Column(db.Integer)
其中,prod_id是顺序产品标识符(prod_id>=10000保留)
在伪代码中,我正在寻找一个相当于以下内容的SQLAlchemy查询:
next_prod_id=1+max(Product.prod_id,其中Product.prod_id<10000)
例如,如果现有表是
id name prod_id
1 Product A 1
2 Product B 2
3 Reserved A 10000
4 Product C 3
5 Reserved B 10001
6 Product D 4
。。。然后下一个产品id需要是5
下面是我对查询的尝试,但它不起作用(语法错误我无法解决):
next\u prod\u id=Product.query(func.max(Product.prod\u id))\
.filter_by(Product.prod_id<10000)+1
好的,设法让func.max执行此任务
这是我的解决方案-不确定它是否是最有效的,但它是有效的
next_prod_id=db.session.query(db.func.max(Product.prod_id))\
.filter(Product.prod_id<10000)\
.scalar()+1
这可能会对您有所帮助:我想我需要使用func.max,但语法有问题(我编辑了问题以添加我的尝试)。初始化变量以按产品ID降序排序,筛选产品ID<1000,并使用限制(1)应用于变量。然后插入变量+1