Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/349.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 初始化对象时出现问题_Python_Sqlalchemy - Fatal编程技术网

Python 初始化对象时出现问题

Python 初始化对象时出现问题,python,sqlalchemy,Python,Sqlalchemy,我尝试创建屏幕对象时出现了一个奇怪的错误。在它工作之前没有任何问题,但是我在向用户类添加新属性时遇到了这个错误。此属性通过用户屏幕以多对多的关系与屏幕相关。这就是错误: “InvalidRequestError:一个或多个映射程序未能编译。异常可能在hasattr()调用中被抑制。消息是:一个或多个映射程序未能编译。异常可能在hasattr()调用中被抑制。消息是:类'zeppelinlib.screen.ScreenTest.screen'未映射” 这些是课程: class Screen(rd

我尝试创建屏幕对象时出现了一个奇怪的错误。在它工作之前没有任何问题,但是我在向用户类添加新属性时遇到了这个错误。此属性通过用户屏幕以多对多的关系与屏幕相关。这就是错误:

“InvalidRequestError:一个或多个映射程序未能编译。异常可能在hasattr()调用中被抑制。消息是:一个或多个映射程序未能编译。异常可能在hasattr()调用中被抑制。消息是:类'zeppelinlib.screen.ScreenTest.screen'未映射”

这些是课程:

class Screen(rdb.Model):
    """Set up screens table in the database"""
    rdb.metadata(metadata)
    rdb.tablename("screens")

    id = Column("id", Integer, primary_key=True)
    title = Column("title", String(100))
    ip = Column("ip", String(20))
        ...

user_screens = Table(
            "user_screens",
            metadata,
            Column("user_id", Integer, ForeignKey("users.id")),
            Column("screen_id", Integer, ForeignKey("screens.id"))
        )

class User(rdb.Model):
    """Set up users table in the database"""
    rdb.metadata(metadata)
    rdb.tablename("users")

    id = Column("id", Integer, primary_key=True)
    name = Column("name", String(50))
    ...

    group = relationship("UserGroup", uselist=False)
    channels = relationship("Channel", secondary=user_channels, order_by="Channel.titleView", backref="users")
    mediaGroups = relationship("MediaGroup", secondary=user_media_groups, order_by="MediaGroup.title", backref="users")
    screens = relationship("Screen", secondary=user_screens, backref="users")
我可能不会向用户添加新关系,因为我真的不知道问题出在哪里


万分感谢

尝试通过
primaryjoin
关键字参数在
关系中的一个(不知道是哪一个)上指定主连接。有时候(在复杂关系图中),SQLAlchemy很难弄清楚它应该如何进行。为我工作过不止一次,尽管是在0.5.x上。

什么是rdb.Model?它是声明性的_base()调用的结果吗?rdb.Model是基于SQLAlchemy构建的库。该库与GROk相关,我正在使用的CMS。这个问题可能会因为那个图书馆而出现,我不确定,但无论如何它都很奇怪!我相信你的问题与你正在使用的CMS库有关。您给出的示例非常接近SQLAlchemy ORM多对多教程,该教程对我很有用。我在我的机器上试用了你的代码,将GROK替换为SQLAlchemy的声明性,效果很好。