2011-09-04 13 views
10

Quiero almacenar una lista de URL de RSS en sqlite db. Estoy usando SQLAlchemy y me preguntaba cómo almacenarlos. Parece que no encuentro ninguna documentación sobre listas, y me preguntaba si esto era legal para una columna: Columna ('rss_feed_urls', Lista)Usar la lista como tipo de datos en una columna (SQLAlchemy)

¿O hay un tipo de matriz que podría usar?

+1

Si usaba PostgreSQL, tiene tipos de matriz, que puede usar para este propósito. Una matriz de 1 dim string es esencialmente una lista de cadenas. –

Respuesta

17

Si realmente debe usar el PickleType. Pero lo que probablemente desee es otra tabla (que consiste en una lista de filas, ¿no?). Basta con crear una tabla para guardar sus feeds RSS:

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

agregar nuevas direcciones URL:

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

recuperar su lista de direcciones URL:

session.query(RssFeed).all() 

Encuentra una alimentación específica por el índice:

session.query(RssFeed).get(1) 

Recomendaría SQLAlchemy's Object Relational Tutorial.

3

Normalmente no hay una lista entre los tipos de datos de la columna de la base de datos SQL.

Una forma de almacenar una lista como valor de columna es convertir esa lista a una cadena, que se correlacionaría con el tipo de datos de la base de datos varchar.

Otra forma es convertir la lista a una representación binaria serializada (usando la biblioteca pickle, por ejemplo) y almacenar el valor como un valor de base de datos de tipo blob.

+1

Bleh Sabía que esto no sería fácil. ¿Cuál es exactamente el tipo varchar? La documentación de SQLAlchemy no detalla. – Chris

+0

Ver [sqlalchemy.types.LargeBinary] (http://www.sqlalchemy.org/docs/core/types.html#sqlalchemy.types.LargeBinary) y [sqlalchemy.types.String] (http: //www.sqlalchemy) .org/docs/core/types.html # sqlalchemy.types.String) –

Cuestiones relacionadas