Как я могу запросить ScalarListType в flask_sqlalchemy

Я хочу вставить список целых чисел в виде типа данных одного столбца в flask_sqlalchemy, и я нашел ScalarListType в пакете SQLAlchemy-Utils:

from sqlalchemy_utils import ScalarListType 

class Foo():
    id = db.Column(db.Integer, primary_key=True)
    list = db.Column(ScalarListType(int))

Я могу запросить foo по id:

foo = Foo.query.filter(Foo.id==1).first()

Тогда foo.list - это целочисленный список [0, 0, 1, 0]

Но как я могу построить запрос для индекса в списке? Например, что-то вроде Foo.list[3]==1

Я не могу найти подсказку, помогите мне, пожалуйста

1 ответ

Я не уверен, что ScalarListType сможет выполнить то, что вы хотите - не похоже, что он создан для запроса по индексу. Посмотрите исходный код здесь - это просто текстовый столбец с запятыми, разделяющими значения.

Возможно, вы сможете взломать что-нибудь вместе с голым SQL, но это, вероятно, будет означать использование LIKEгде-нибудь, или расщепление строк, которое быстро усложняется.

В долгосрочной перспективе вам, возможно, будет лучше сделать отдельные столбцы для этих данных.

Другие вопросы по тегам