V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
Arthur0902
V2EX  ›  问与答

如何使用 Flask-Sqlalchemy query 出一个三层 one-to-many 结构的数据库

  •  
  •   Arthur0902 · 2014-08-19 07:03:23 +08:00 · 2881 次点击
    这是一个创建于 3751 天前的主题,其中的信息可能已经有所发展或是发生改变。
    可能标题有点不清楚,详细解释如下:

    一个数据库有三张表。一张表存贮主分类,第二张子分类,第三张存文章。顺序是一对多。即一个主分类对应多个子分类,一个子分类又对应多个文章。

    想知道如何写Query语句,能够查询出一个主分类下的所有子分类,以及某个子分类下的所有文章。

    比如在做导航栏的时候,希望能用一个数据结构查出所有主分类,以及各自的子分类。这样传递到模板里用for循环即可。

    数据表的结构大概如下:

    class MainLevel(db.Model):
    __tablename__ = 'mainlevel'
    """主分类的数据模型"""
    id = db.Column(db.Integer, primary_key=True)
    # 显示的名称
    name = db.Column(db.String(50))
    # 英文名称
    name_en = db.Column(db.String(50))
    # url上的名称
    slug = db.Column(db.String(50), unique=True)
    # 主导航下拉菜单下的图片地址
    image_url = db.Column(db.String(100))
    # 显示顺序
    show_order = db.Column(db.Integer)
    # 创建日期
    create_date = db.Column(db.DateTime)



    sublevel = db.relationship('SubLevel', backref='mainlevel', lazy='dynamic')

    def __repr__(self):
    return '<名称:%s>' % self.name

    class SubLevel(db.Model):
    __tablename__ = 'sublevel'
    """子分类的数据类型"""
    id = db.Column(db.Integer, primary_key=True)
    # 显示的名称
    name = db.Column(db.String(50))
    # 英文名称
    name_en = db.Column(db.String(50))
    # url上的名称
    slug = db.Column(db.String(50), unique=True)
    # 显示顺序
    show_order = db.Column(db.Integer)
    # 创建日期
    create_date = db.Column(db.DateTime)

    # 与Main Level的关系
    mainlevel_id = db.Column(db.Integer, db.ForeignKey('mainlevel.id'))

    def __repr__(self):
    return '<名称:%s>' % self.name

    谢谢!
    目前尚无回复
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1456 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 17:26 · PVG 01:26 · LAX 09:26 · JFK 12:26
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.