gpt4 book ai didi

python - 使用查找值而不是外键 ID 在 SQLAlchemy 中创建新实例

转载 作者:行者123 更新时间:2023-11-29 03:28:26 25 4
gpt4 key购买 nike

我有一个现有的数据库,想要构建一个 SQLAlchemy 包装器以在 Python 中使用该数据库。数据库中常用如下查找表:

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)

我想做的是使用行业名称而不是行业的(技术) key 创建一个新的 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 而不是名称。但我不知道如何将外键表的名称放入其中。当然,我可以简单地添加一个处理查找的@classmethod,但如果存在任何内置功能,我更愿意使用它。

感谢任何帮助/指点

最佳答案

您可以创建一个构造函数,它会在创建对象时用 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

关于python - 使用查找值而不是外键 ID 在 SQLAlchemy 中创建新实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33275521/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com