2011-09-04 90 views
10

我想在sqlite數據庫中存儲RSS源url的列表。我正在使用SQLAlchemy並想知道如何存儲這些。我似乎無法找到關於列表的任何文檔,並且想知道這是否對於列是合法的: 列('rss_feed_urls',列表)在列中使用列表作爲數據類型(SQLAlchemy)

或者是否存在可以使用的數組類型?

+1

如果您使用的是PostgreSQL,它具有數組類型,您可以將其用於此目的。 1 dim字符串數組實質上是一個字符串列表。 –

回答

17

如果你真的必須使用PickleType。但你可能想要的是另一個表(它由列表行組成,對吧?)。只要創建一個表來保存你的RSS提要:

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

添加新網址:

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

檢索您的URL列表:

session.query(RssFeed).all() 

通過索引查找特定的飼料:

session.query(RssFeed).get(1) 

我推薦SQLAlchemy的Object Relational Tutorial

3

SQL數據庫列數據類型之間通常沒有列表。

將列表存儲爲列值的一種方法是將該列表轉換爲字符串,該字符串將映射到數據庫數據類型varchar

另一種方法是將列表轉換爲序列化二進制表示(例如,使用pickle庫),並將該值存儲爲類型爲blob的數據庫值。

+1

Bleh我知道這並不容易。什麼是varchar類型? SQLAlchemy文檔沒有詳細說明。 – Chris

+0

請參閱[sqlalchemy.types.LargeBinary](http://www.sqlalchemy.org/docs/core/types.html#sqlalchemy.types.LargeBinary)和[sqlalchemy.types.String](http://www.sqlalchemy .ORG /文檔/型芯/ types.html#sqlalchemy.types.String) –