Sqlalchemy 不适用于分页

2024-04-01

我对 Flask 和 sqlalchemy 完全陌生。我尝试制作一个网站只是为了更好地了解 Flask。教程有很多,大部分都是使用sqlite。为了我的目的,我使用 postgres。我需要一个可以使用分页的页面。但我一直收到错误

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

我的数据库

uri = os.environ.get('DATABASE_URL', 'postgres://login:[email protected] /cdn-cgi/l/email-protection/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() 出现同样的错误。正常的 get 或 first 照常工作。

我将不胜感激任何建议!


你正在呼唤paginate()在 SQLAlchemy 提供的查询对象上,但分页功能只能从 Flask-SQLAlchemy 中获得,它对基本查询对象进行子类化以添加此功能和其他功能,包括get_or_404() and first_or_404()您也发现不起作用的方法。

所有这一切的发生是因为您直接使用 SQLAlchemy 创建数据库和模型,而不是使用 Flask-SQLAlchemy 提供的工具。如果你按照 Flask 这样做-SQLAlchemy 文档 http://pythonhosted.org/Flask-SQLAlchemy/你会发现一切都会很好。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Sqlalchemy 不适用于分页 的相关文章

随机推荐