Как я могу запросить 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
где-нибудь, или расщепление строк, которое быстро усложняется.
В долгосрочной перспективе вам, возможно, будет лучше сделать отдельные столбцы для этих данных.