创建sql alchemy关联表时出错

7qhs6swi  于 2021-06-19  发布在  Mysql
关注(0)|答案(0)|浏览(196)

我回来和另一个sql炼金术错误为你们大家。我不知道为什么我在他们的文档中挣扎这么多,或者是我太笨了以至于无法理解,但希望有人愿意帮助我。
我目前正在尝试创建两个表之间的多对多关系;dataset\u table和table\u table(忽略奇怪的名称)
我已经创建了适当的类,并添加了关联表,其中包含适当的参数,将两个类及其id链接在一起。

t_dataset_table = Table(
't_dataset_table',
metadata,
Column('id', Integer, primary_key=True),
Column('dataset_id', Integer, ForeignKey('Dataset_Table.dataset_id'), nullable=False),
Column('table_id', Integer, ForeignKey('Table_Table.table_id'), nullable=False)
)

class Dataset_Table(Base):
__tablename__ = 'dataset'

dataset_id = Column(INTEGER(10), primary_key=True)
dataset_name = Column(String(45), nullable=False)
dataset_title = Column(String(45))
dataset_comment = Column(Text, nullable=False)
dataset_is_archived = Column(TINYINT(4), nullable=False, server_default=text("'0'"))
Dataset_date_created = Column(TIMESTAMP)

tables = relationship('Table_Table',
                      secondary=t_dataset_table,
                      back_populates='dataset')

class Table_Table(Base):
__tablename__ = 'table'

table_id = Column(INTEGER(11), primary_key=True, unique=True)
table_group = Column(String(45), nullable=False)
table_name = Column(String(45), nullable=False)
table_description = Column(Text, nullable=False)
table_longitudinal = Column(Enum('S', 'Y', 'N', 'L'))
table_medical_domains = Column(Enum('DERMATOLOGY', 'OPHTHALMOLOGY', 'ORTHOPEDICS', 'PLASTICS', 'ENT', 'GI', 'RHEUMATOLOGY', 'UROLOGY'))
table_is_archived = Column(TINYINT(4), nullable=False, server_default=text("'0'"))

datasets = relationship('Dataset_Table',
                        secondary=t_dataset_table,
                        back_populates='table')

我已经创建了关联表和每个表中的两列来处理它们的“子级”(子级) tables 数据集表中的列和 dataset 表中的列(表)。
我还缺什么吗?
我目前正在遍历一些json数据,并通过创建类的示例并填充该示例来收回数据。

with open("cow.json") as js:
    data = json.load(js)

 ds = Dataset_Table 
ds.dataset_comment = data['_comment']
    for tables in data['tables']:
        tb = Table_Table
        tb.table_name = tables['name']

由于某些原因,我在尝试将表附加到该数据集示例(ds)时出错 ds.tables.append(tb) ```
Neither 'InstrumentedAttribute' object nor 'Comparator' object
associated with Dataset_Table.tables has an attribute 'append'

我不确定是否值得一提的是,我认为文档通过调用类ie来创建类的示例 `cow = Dataset_Table()` 但我不带括号吗?
有区别吗?我做错什么了吗?我应该放弃做个垃圾工吗?你告诉我。
非常感谢你的时间和帮助。
--编辑
尝试创建dataset类示例时出现的错误,即: `cow = Dataset_Table(dataset_name = 'cow table')` 是:

sqlalchemy.orm.exc.UnmappedClassError: Class 'sqlalchemy.sql.schema.Table' is not mapped

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题