我有一个现有的数据库想要构建一个SQLAlchemy包装器来使用Python中的数据库。 DB中通常使用如下所示的查找表:
class Industry(Base):
__tablename__ = 'industry'
id = Column(Integer, primary_key=True)
name = Column(String, nullable=True)
class IndustrySector(Base):
__tablename__ = 'industry_sector'
id = Column(Integer, primary_key=True)
industry_id = Column(Integer, ForeignKey('industry.id'), nullable=False)
name = Column(String, nullable=True)
我想要做的是使用行业名称而不是行业的(技术)密钥创建一个新的IndustrySector实例,即
new_industry_sector = IndustrySector(industry_id = 'Manufacturing', name = 'Textile')
而不是
manu_industry_id = session.query(Industry.id).filter(Industry.name=='Manufacturing').first().id
new_industry_sector = IndustrySector(name = 'Textile', industry_id = new_industry_id)
显然,上面的示例无法正常工作,因为我正在过滤ID而不是名称。但我不知道如何获得外键表的名称。当然我可以简单地添加一个处理查找的@class方法,但是如果存在任何内置功能,我宁愿使用它。
赞赏任何帮助/指示
答案 0 :(得分:0)
您可以创建一个构造函数,只要创建了一个对象,它就会用id值替换该字符串。
class IndustrySector(Base):
__tablename__ = 'industry_sector'
id = Column(Integer, primary_key=True)
industry_id = Column(Integer, ForeignKey('industry.id'), nullable=False)
name = Column(String, nullable=True)
def __init__(self, industry_id, name):
self.name = name
self.industry_id = fetch_id(industry_id)
def fetch_id(industry_id):
# fetch and return the id