我目前正在为一个太阳活动区域建立一个数据库,其中一列应该获取区域号,目前,我以以下方式声明了该区域号:
noaa_number = sql.Column(sql.Integer, nullable=True)
但是,由于随着区域的发展可能会分配一个新的数字,哪种列类型会更好地支持一个列表,以保留给定区域的所有数字?因此,与其输入类似:
noaa_number = 12443
我可以将结果存储为:
#a simple entry
noaa_number = [12443]
#or multiple results
noaa_number = [12444,12445]
列表中的这些元素将是整数。
我正在查看文档,最好的主意是将此列作为字符串放置并解析出所有数字。尽管这很好,但我想知道是否有更好,更合适的方法。
在某些情况下,您可以使用array column。这确实是存储非常具体的数据的不错方法。例:
class Example(db.Model):
id = db.Column(db.Integer, primary_key=True)
my_array = db.Column(db.ARRAY(db.Integer())
# You can easily find records:
# Example.my_array.contains([1, 2, 3]).all()
# You can use text items of array
# db.Column(db.ARRAY(db.Text())
您也可以使用CompositeArray(sqlalchemy_utils)将自定义数据库类型用作数组项。例:
# let's imagine that we have some meta history
history = db.Column(
CompositeArray(
CompositeType(
'history',
[
db.Column('message', db.Text),
]
)
)
# example of history type:
CREATE TYPE history AS (
message text
);
注意!不确定sqlite,但使用postgres应该可以正常工作。
希望这可以帮助。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句