我回来和另一个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
暂无答案!
目前还没有任何答案,快来回答吧!