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

编程入门 行业动态 更新时间:2024-10-25 12:25:55
本文介绍了使用Postgres在SqlAlchemy模型中动态生成的字段的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述

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

I want to create a table with a column for each hour of the day of Float type. How do I get rid of this verbose syntax:

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< =值< = 1)?

Another question is how do I enforce checks on the values (e.g. 0 <= value <=1)?

作为验证?然后,如何为24个字段整齐地设置验证?

As validation? Then how do i set validation neatly for 24 fields?

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

Can I instead add a check constraint with SqlAlchemy?

推荐答案

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

The key here is to realize that a class block is just a block of code, so you can put loops in there:

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

更多推荐

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

本文发布于:2023-10-13 10:33:58,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1487714.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:字段   模型   动态   Postgres   SqlAlchemy

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!