如何用sqlalchemy连接有两张表的pymysql数据库,提取里面的数据并分页?

这是我两张表的数据:

clipboard.png

这是在flask网页上显示的内容:

clipboard.png

我想连接到sqlalchemy以:

clipboard.png

这种方式显示分页,像这样子:

clipboard.png

阅读 3.1k
1 个回答

假设 models.py 你是这样设计的:

# -*- coding:utf-8 -*-
___blog__ = 'www.os373.cn'


class App(db.Model):
    __tablename__ = 'apps'
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(64), unique=True, index=True)
    keyword = .....
    ...
    ...
    # 定义“一对多”关系中的一
    downloads = db.relationship('Download', backref='download', lazy='dynamic')
    

class Download(db.Model):
    __tablename__ = 'downloads'
    id = db.Column(db.Integer, primary_key=True)    
    keyword = .....
    ...
    ...
    # 定义“一对多”关系中的多
    aid = db.Column(db.Integer, db.ForeignKey('apps.id'))

以上设计,就是设置了一个一对多关系的数据库表结构。

现在我们设计 views.py 视图

# -*- coding:utf-8 -*-
___blog__ = 'www.os373.cn'

    .........
    
    page_index = request.args.get('page', 1, type=int)
    downloads = db.session.query(App.id, App.name, Download.keyword, Download.ranks, Download.download, Download.yesterday_download, Download.today_download).join(Download, App.id==Download.aid).order_by(Download.id.desc()). paginate(page_index, per_page=20, error_out=False)

如果想精进自己的 sqlalchmy 的能力,希望你能多看看我的这个 sql to sqlalchemy 项目

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题