Sqlalchemy不适用于分页

时间:2013-08-23 18:36:44

标签: postgresql pagination flask flask-sqlalchemy

我对flask和sqlalchemy全新。我尝试建立一个网站只是为了更好地了解烧瓶。有很多教程,他们大多使用sqlite。为了我的目的,我使用postgres。我需要一个页面,我可以使用分页。但是我一直在收到错误

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

我的数据库

uri = os.environ.get('DATABASE_URL', 'postgres://login:password@127.0.0.1/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)
    ...

然后我使用paginate

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

与get_or_404()和first_or_404()相同的错误。正常得到或第一次像往常一样工作。

我将不胜感激任何建议!

1 个答案:

答案 0 :(得分:2)

您正在SQLAlchemy提供的查询对象上调用paginate(),但分页功能仅可从Flask-SQLAlchemy中获取,Flask-SQLAlchemy是基础查询对象的子类,用于添加此功能和其他功能,包括{{1您也发现无效的方法和get_or_404()

所有这一切都是因为您直接使用SQLAlchemy创建了数据库和模型,而不是使用Flask-SQLAlchemy提供的工具。如果你根据Flask - SQLAlchemy documentation执行此操作,你会发现一切都会正常工作。