gpt4 book ai didi

python - 多次指定表名

转载 作者:行者123 更新时间:2023-12-02 07:17:33 25 4
gpt4 key购买 nike

我配置了以下表格:

class User(Base):
__tablename__ = "user"

id = Column(Integer, primary_key=True)
name = Column(String)


class Gadget(Base):
__tablename__ = "gadget"

id = Column(Integer, primary_key=True)
brand = Column(String)


class UserGadget(Base):
__tablename__ = "user_gadget"

user_id = Column(Integer, ForeignKey('user.id'), primary_key=True)
gadget_id = Column(Integer, ForeignKey('gadget.id'), primary_key=True)

user = relationship("User", backref=backref('userGadgets', order_by=user_id))
gadget = relationship("Gadget", backref=backref('userGadgets', order_by=gadget_id))


class GadgetComponent(Base):
__tablename__ = "gadget_component"

id = Column(String, primary_key=True)
gadget_id = Column(Integer,ForeignKey('gadget.id'))
component_maker = Column(String)

host = relationship("Gadget", backref=backref('components', order_by=id))


class ComponentUsingMetal(Base):
__tablename__ = "component_metal"

id = Column(Integer, primary_key=True)
component_id = Column(Integer, ForeignKey('GadgetComponent.id'))
metal = Column(String)

component = relationship("GadgetComponent", backref=backref('gadgetComponentMetals', order_by=id))

执行以下查询时: session.query(User).join("userGadgets", "gadget", "components","gadgetComponentMetals").filter(ComponentUsingMetal.metal == 'iron') , component_metal 被附加到查询两次给出错误“表名 component_metal 指定多次”。
知道我做错了什么吗?

最佳答案

我将问题追溯到 selectable.py 中的以下行:froms = [f for f in froms if f not in toremove] 此行删除已被联接覆盖的表,以便 FROM 子句不会多次指定同一表。该行没有删除 component_metal,即使 toremove 意味着我对同一个数据库表有两个不同的 Table 对象。然后我注意到 component_metal 类 ComponentUsingMetal 的导入看起来有所不同。其他进口看起来像:

from myschema import GadgetComponent 
from myschema import Gadget
from python.myschema ComponentUsingMetal

修复导入后,问题就消失了。

关于python - 多次指定表名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21927216/

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