Использование списка в качестве типа данных в столбце (SQLAlchemy) - PullRequest
15 голосов
/ 04 сентября 2011

Я хочу сохранить список URL фидов RSS в базе данных sqlite. Я использую SQLAlchemy и мне было интересно, как их хранить. Я не могу найти какую-либо документацию о списках, и мне было интересно, было ли это законно для столбца: Столбец ('rss_feed_urls', Список)

Или есть тип массива, который я мог бы использовать?

Ответы [ 3 ]

23 голосов
/ 04 сентября 2011

Если вам действительно нужно, вы можете использовать PickleType .Но то, что вы, вероятно, хотите, - это другая таблица (которая состоит из списка строк, верно?).Просто создайте таблицу для хранения ваших RSS-каналов:

class RssFeed(Base):
    __tablename__ = 'rssfeeds'
    id = Column(Integer, primary_key=True)
    url = Column(String)

Добавьте новые URL:

feed = RssFeed(url='http://url/for/feed')
session.add(feed)

Получите ваш список URL:

session.query(RssFeed).all()

Найдите конкретныйфид по индексу:

session.query(RssFeed).get(1)

Я бы порекомендовал Учебник по реляционным объектам SQLAlchemy .

5 голосов
/ 04 сентября 2011

Обычно нет типов среди типов данных столбцов базы данных SQL.

Один из способов сохранить список в виде значения столбца - преобразовать этот список в строку, которая соответствует типу данных базы данных varchar.

Другим способом является преобразование списка в сериализованное двоичное представление (например, с использованием библиотеки pickle ) и сохранение значения в качестве значения базы данных типа blob.

2 голосов
/ 15 сентября 2018

Если вы используете базу данных PostgreSQL, вы можете использовать для этого тип SQL Alchemy ARRAY . Обратите внимание, что это типизированный массив.

class sqlalchemy.types.ARRAY(item_type, as_tuple=False, dimensions=None, zero_indexes=False)¶
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...