Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/361.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python SqlAlchemy外键问题_Python_Sqlalchemy - Fatal编程技术网

Python SqlAlchemy外键问题

Python SqlAlchemy外键问题,python,sqlalchemy,Python,Sqlalchemy,我发现了错误 无法从字符串“MACHINE\u IE”分析rfc1738 URL 当我尝试导入以下内容时 class MACHINE(declarative_base()): __tablename__ = 'MACHINE' MACHINE_UID = Column(Integer, primary_key=True) MACHINE_IP = Column(String) MACHINE_NAME = Column(String) MACHINE_IN

我发现了错误

无法从字符串“MACHINE\u IE”分析rfc1738 URL

当我尝试导入以下内容时

class MACHINE(declarative_base()):
    __tablename__ = 'MACHINE'
    MACHINE_UID = Column(Integer, primary_key=True)
    MACHINE_IP = Column(String)
    MACHINE_NAME = Column(String)
    MACHINE_INFO = Column(String)

class IE(declarative_base()):
    __tablename__ = 'IE'
    IE_UID = Column(Integer, primary_key=True)
    IE_VERSION = Column(String)
    IE_MAJOR = Column(String)

class MACHINE_IE(declarative_base().metadata):
    __tablename__ = 'MACHINE_IE'
    IE_UID = Column(Integer, ForeignKey("IE.IE_UID"), primary_key=True)
    MACHINE_UID = Column(Integer, ForeignKey("MACHINE.MACHINE_UID"))
    EFFECTIVE_DATE = Column(DateTime)
如果我删除

元数据

然后我可以导入模块,在“MACHINE”和“IE”表上执行查询,并显示行中的数据。然而,当我查询“MACHINE_IE”,然后尝试显示查询中的一些数据时,我得到以下结果

class MACHINE(declarative_base()):
    __tablename__ = 'MACHINE'
    MACHINE_UID = Column(Integer, primary_key=True)
    MACHINE_IP = Column(String)
    MACHINE_NAME = Column(String)
    MACHINE_INFO = Column(String)

class IE(declarative_base()):
    __tablename__ = 'IE'
    IE_UID = Column(Integer, primary_key=True)
    IE_VERSION = Column(String)
    IE_MAJOR = Column(String)

class MACHINE_IE(declarative_base().metadata):
    __tablename__ = 'MACHINE_IE'
    IE_UID = Column(Integer, ForeignKey("IE.IE_UID"), primary_key=True)
    MACHINE_UID = Column(Integer, ForeignKey("MACHINE.MACHINE_UID"))
    EFFECTIVE_DATE = Column(DateTime)
sqlalchemy.exc.norReferencedTableError:与列“MACHINE\u IE.IE\u UID”关联的外键找不到表“IE”,用于生成指向目标列“IE\u UID”的外键

我猜我需要“元数据”在那里,但错误似乎是抱怨数据库连接字符串时,我使用它。但是,如果“元数据”被删除,我可以连接到db w/o问题

这是连接数据

connect_string = "oracle+cx_oracle://{0}:{1}@{2}:{3}/{4}".format(user, pw, server, port, sid)

非常感谢您的帮助。

您正在使用多个
Base
实例。你应该做:

Base = declarative_base()

class MACHINE(Base):
    ...

class IE(Base):
    ...

...

您正在使用多个
Base
实例。你应该做:

Base = declarative_base()

class MACHINE(Base):
    ...

class IE(Base):
    ...

...

确切地请看。如果您能提到一些关于基础和元数据是如何协同工作的,以及关于从meta.net进行表查找的,那么这将是一个很好的答案。请看。如果您提到一些关于基础和元数据是如何协同工作的,以及关于从元数据中查找表的内容,那么这将是一个很好的答案。