2013-08-23 88 views
4

我是全新的燒瓶和sqlalchemy。我試圖製作一個網站,以便更好地理解燒瓶。有很多教程,他們大多使用sqlite。爲了我的目的,我使用postgres。我需要一個頁面,我可以使用分頁。但是,所有的時間,我得到的錯誤Sqlalchemy不能與分頁工作

AttributeError: 'Query' object has no attribute 'paginate' 

我的數據庫

uri = os.environ.get('DATABASE_URL', 'postgres://login:[email protected]/db_name') 
engine = create_engine(uri, convert_unicode=True) 
db_session = scoped_session(sessionmaker(autocommit=False, 
        autoflush=False, 
        bind=engine)) 

Base = declarative_base() 
Base.query = db_session.query_property()  

簡單的模型

class User(Base): 
    __tablename__ = 'user' 

    id = Column(Integer, primary_key=True, autoincrement=True) 
    name = Column(Unicode(100), nullable=False) 
    ... 

然後我用分頁

users = User.query.paginate(1, 5, False) 

與get_or_404同樣的錯誤()和first_or_404()。正常或第一次照常工作。

我會感激任何意見!

回答

2

要調用由SQLAlchemy中所提供的查詢對象paginate(),但分頁功能僅適用從燒瓶SQLAlchemy的,其子類的基本查詢對象添加這個和其他功能,包括get_or_404()first_or_404()方法,您也發現不起作用。

所有這些都是因爲您直接使用SQLAlchemy創建了數據庫和模型,而不是使用Flask-SQLAlchemy提供的工具。如果你按照Flask- SQLAlchemy documentation這樣做,你會發現一切都會正常工作。

+0

我也面臨同樣的問題,所以我需要使用'Flask-SQLAlchemy'而不是sqlalchemy來創建我的模型?實現分頁 – kartheek

+0

如何使分頁與SQLAlchemy一起工作?請幫忙。 – Hussain

+0

@Hussain:你可以使用'limit()'和'offset()'查詢修飾符來請求結果的一個子集。 – Miguel