鍍金池/ 問答/Python  數(shù)據(jù)庫/ 如何用sqlalchemy連接有兩張表的pymysql數(shù)據(jù)庫,提取里面的數(shù)據(jù)并分

如何用sqlalchemy連接有兩張表的pymysql數(shù)據(jù)庫,提取里面的數(shù)據(jù)并分頁?

這是我兩張表的數(shù)據(jù):

clipboard.png

這是在flask網(wǎng)頁上顯示的內(nèi)容:

clipboard.png

我想連接到sqlalchemy以:

clipboard.png

這種方式顯示分頁,像這樣子:

clipboard.png

回答
編輯回答
笨小蛋

假設(shè) models.py 你是這樣設(shè)計的:

# -*- 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 = .....
    ...
    ...
    # 定義“一對多”關(guān)系中的一
    downloads = db.relationship('Download', backref='download', lazy='dynamic')
    

class Download(db.Model):
    __tablename__ = 'downloads'
    id = db.Column(db.Integer, primary_key=True)    
    keyword = .....
    ...
    ...
    # 定義“一對多”關(guān)系中的多
    aid = db.Column(db.Integer, db.ForeignKey('apps.id'))

以上設(shè)計,就是設(shè)置了一個一對多關(guān)系的數(shù)據(jù)庫表結(jié)構(gòu)。

現(xiàn)在我們設(shè)計 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 項目

2017年5月6日 13:56