Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/290.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/75.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 与Sqlalchemy查询对象接口以扩展自定义查询类型_Python_Sql_Sqlalchemy - Fatal编程技术网

Python 与Sqlalchemy查询对象接口以扩展自定义查询类型

Python 与Sqlalchemy查询对象接口以扩展自定义查询类型,python,sql,sqlalchemy,Python,Sql,Sqlalchemy,我正在为我的模型添加分页功能。我可以用mixin中的方法来实现这一点,我想我理解在这种情况下分页是什么,但我希望添加查询,这样我就可以在任何地方传递分页,而无需硬编码模型方法和mixin,例如: Mymodel.query.filter(Mymodel.attr=='X').paginate(**args, **kwargs) flask sqlalchemy可以做到这一点,但我没有使用它,尽管我已经对它进行了检查,试图提取一些功能 如果我有类似的方法: def paginate(self,

我正在为我的模型添加分页功能。我可以用mixin中的方法来实现这一点,我想我理解在这种情况下分页是什么,但我希望添加查询,这样我就可以在任何地方传递分页,而无需硬编码模型方法和mixin,例如:

Mymodel.query.filter(Mymodel.attr=='X').paginate(**args, **kwargs)
flask sqlalchemy可以做到这一点,但我没有使用它,尽管我已经对它进行了检查,试图提取一些功能

如果我有类似的方法:

def paginate(self, page, per_page=20):
        items = self.limit(per_page).offset((page - 1) * per_page).all()
        return Pagination(self, page, per_page, self.count(), items)
我如何在sqlalchemy查询链中将其作为具有进出接口的东西插入?我有点了解sqlalchemy,也有点不了解它是如何在flask sqlalchemy中实现的,但我想提取/学习如何做到这一点,以及将来对查询的更多控制,完善我对sqlalchemy的使用,所以我不确切知道我将如何使用它,只是问一个问题并从那里开始


详细回答:继续阅读sqlalchemy文档和代码,直到我获得更多的理解。我希望扩展orm.Query——我已经完成了,但我不知道如何将其与我的项目联系起来,因为我不理解sqlalchemy的基本机制,但我认为我只需要将我的分页查询添加到我正在使用的声明性基中,但一旦我重新开始工作,就会看到

你读过这个了吗

它清楚地解释了要在flask中使用带有sqlalchemy扩展的分页,可以执行以下操作:

class flask.ext.sqlalchemy.Pagination(query, page, per_page, total, items)¶
在您的具体情况下,您可以执行以下操作:

myquery = Mymodel.query.filter(Mymodel.attr=='X')
pagination = Pagination(myquery,page,per_page,total,items)

然后在模板中,您可以使用此分页对象使用render_pagination()宏进行渲染

这一点我理解,也没有问题,所以也许我应该澄清一下。我希望能够操纵查询对象,使使用“分页”在链中的任何一点都可行。Basequery.paginate返回这个,我已经有了paginate类的想法。换句话说,我希望避免对每个模型的小p分页查询进行硬编码,而是构建一种扩展orm.query的方法,就像我看到的flask sqla一样。我希望自己做Basequery.paginate,这是我正在做的工作的一部分,而不需要经历炼金术。