【问题标题】:Get list of all relationships from a table Flask SQLalchemy从表中获取所有关系的列表 Flask SQLalchemy
【发布时间】:2020-07-07 16:32:51
【问题描述】:

我正在尝试使用 Flask SQLAlchemy 获取表的所有关系列表,但没有看到任何选项,只是关于如何创建关系。 有谁知道我该怎么做?任何帮助深表感谢。 这是 3 个模型的简单示例。如何从 Member 模型中获取两个关系的列表?

from flask_sqlalchemy import SQLAlchemy
from flask import Flask
import os
from flask_login import UserMixin

app = Flask(__name__)

file_path = os.path.abspath(os.getcwd()) + "\database.db"

app.config["SQLALCHEMY_DATABASE_URI"] = "sqlite:///" + file_path
app.config["SQLALCHEMY_TRACK_MODIFICATIONS"] = False
app.config["SECRET_KEY"] = "my secret!"

db = SQLAlchemy(app)


class Member(db.Model, UserMixin):
    
    id = db.Column(db.Integer, primary_key = True)
    name = db.Column(db.String(40), unique = True)
    
    
    hobbies = db.relationship("Hobbies", backref="member", lazy="dynamic")
    
    friends = db.relationship("Friends", backref="member", lazy="dynamic")
    
    def __init__(self, name):
        
        self.name = name
        
    def __repr__(self):
        
        return "<Member {}>".format(self.id)
    

    
class Hobbies(db.Model):
    
    id = db.Column(db.Integer, primary_key = True)
    hobby = db.Column(db.String(40))
    user_id = db.Column(db.Integer, db.ForeignKey("user.id"))
    

    def __init__(self, hobby, user_id):
        
        self.hobby = hobby
        self.user_id = user_id
        
    def __repr__(self):
        
        return "<Hobbies {}>".format(self.id)
    
    
    
class Friends(db.Model):
    
    id = db.Column(db.Integer, primary_key = True)
    friend = db.Column(db.String(40))
    
    user_id = db.Column(db.Integer, db.ForeignKey("user.id"))
    

    def __init__(self, friend, user_id):
        
        self.friend = friend
        self.user_id = user_id
        
    def __repr__(self):
        
        return "<Friends {}>".format(self.id)

    

【问题讨论】:

    标签: python flask foreign-keys flask-sqlalchemy


    【解决方案1】:
    from sqlalchemy.inspection import inspect
    
    relations = inspect(Member).relationships.items()
    

    【讨论】:

    • 您可以遍历db.metadata.tables 中的所有表,并通过上面的inspect 方法访问它们的所有关系。
    猜你喜欢
    • 2019-11-23
    • 2016-12-10
    • 2014-12-18
    • 2021-04-07
    • 1970-01-01
    • 2015-03-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多