gpt4 book ai didi

python - 使用 Postgres 在 SqlAlchemy 模型中动态生成字段

转载 作者:太空宇宙 更新时间:2023-11-03 16:20:15 25 4
gpt4 key购买 nike

我想创建一个表,其中包含一天中每个小时的 Float 类型列。如何摆脱这种冗长的语法:

from app import db

class HourlySchedule(db.Model):
id = db.Column(
db.Integer,
primary_key=True
)

h0 = db.Column(db.Float, nullable=True)
h1 = db.Column(db.Float, nullable=True)
h2 = db.Column(db.Float, nullable=True)
h3 = db.Column(db.Float, nullable=True)
h4 = db.Column(db.Float, nullable=True)
h5 = db.Column(db.Float, nullable=True)
h6 = db.Column(db.Float, nullable=True)
h7 = db.Column(db.Float, nullable=True)
h8 = db.Column(db.Float, nullable=True)
h9 = db.Column(db.Float, nullable=True)
h10 = db.Column(db.Float, nullable=True)
h11 = db.Column(db.Float, nullable=True)
h12 = db.Column(db.Float, nullable=True)
h13 = db.Column(db.Float, nullable=True)
h14 = db.Column(db.Float, nullable=True)
h15 = db.Column(db.Float, nullable=True)
h16 = db.Column(db.Float, nullable=True)
h17 = db.Column(db.Float, nullable=True)
h18 = db.Column(db.Float, nullable=True)
h19 = db.Column(db.Float, nullable=True)
h20 = db.Column(db.Float, nullable=True)
h21 = db.Column(db.Float, nullable=True)
h22 = db.Column(db.Float, nullable=True)
h23 = db.Column(db.Float, nullable=True)

另一个问题是如何强制检查值(例如 0 <= value <=1)?

作为验证?那么如何整齐地设置24个字段的验证呢?

我可以使用 SqlAlchemy 添加检查约束吗?

最佳答案

这里的关键是要认识到 class block 只是一个代码块,因此您可以在其中放置循环:

class HourlySchedule(db.Model):
id = db.Column(db.Integer, primary_key=True)

for i in range(24):
locals()["h{}".format(i)] = db.Column(db.Float)

@validates(*("h{}".format(i) for i in range(24)))
def _validate(self, k, h):
assert 0 <= h <= 1
return h

关于python - 使用 Postgres 在 SqlAlchemy 模型中动态生成字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38550984/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com