python - 哪种列类型支持 sqlalchemy 中的列表?

标签 python python-3.x list sqlalchemy

我目前正在为太阳事件区域建立一个数据库,其中一列应该获取区域编号,目前我已通过以下方式声明:

noaa_number = sql.Column(sql.Integer, nullable=True)

但是,由于随着区域的发展可能会分配新的编号,因此哪种列类型可以更好地支持列表来保留给定区域指定的所有编号?因此,不要有这样的条目:

noaa_number = 12443

我可以将结果存储为:

#a simple entry
noaa_number = [12443]
#or multiple results
noaa_number = [12444,12445]

列表中的这些元素将是整数。

我正在检查documentation我最好的想法是将这一列作为字符串放置并解析其中的所有数字。虽然这样工作得很好,但我想知道是否有更好、更合适的方法。

最佳答案

在某些情况下,您可以使用 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
);

Note! Not sure about sqlite but with postgres should works fine.

希望这有帮助。

关于python - 哪种列类型支持 sqlalchemy 中的列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53279590/

相关文章:

java - 基于实例变量java对列表进行排序

python - 如何根据逗号分割包含多个字符串值的 csv 行,但不考虑大括号 { } 内的逗号

python - 创建一个被视为列表但具有更多功能的 python 类?

python - 如何完成 "persistence bugger"的 Python 代码?

java - 在列表中查找字谜

python - 查找列表中最大的匹配项

python - Google App Engine : from six. 移动导入 http_client 没有名为移动的模块

python - 在 Pandas 中重采样和归一化不规则时间序列数据

python - 如何在 tkinter Canvas 上交换两个对象的位置

python-3.x - 带有 gaiohttp 工作线程的 Gunicorn 总是使用 Flask 应用程序返回 404