diff --git a/flask_sqlalchemy/__init__.py b/flask_sqlalchemy/__init__.py index e4d19ea0..d33cd924 100644 --- a/flask_sqlalchemy/__init__.py +++ b/flask_sqlalchemy/__init__.py @@ -22,7 +22,7 @@ from flask.signals import Namespace from operator import itemgetter from threading import Lock -from sqlalchemy import orm, event, inspect +from sqlalchemy import orm, event, inspect, func from sqlalchemy.orm.exc import UnmappedClassError from sqlalchemy.orm.session import Session as SessionBase from sqlalchemy.engine.url import make_url @@ -478,7 +478,7 @@ def paginate(self, page=None, per_page=None, error_out=True): if page == 1 and len(items) < per_page: total = len(items) else: - total = self.order_by(None).count() + total = self.session.execute(self.statement.with_only_columns([func.count()]).order_by(None)).scalar() return Pagination(self, page, per_page, total, items)