【发布时间】:2019-01-09 23:10:50
【问题描述】:
您好,我有一张 3NF 形式的表格
ftype_table = Table(
'FTYPE',
Column('ftypeid', Integer, primary_key=True),
Column('typename', String(50)),
base.metadata,
schema='TEMP')
file_table = Table(
'FILE',
base.metadata,
Column('fileid', Integer, primary_key=True),
Column('datatypeid', Integer, ForeignKey(ftype_table.c.datatypeid)),
Column('size', Integer),
schema='TEMP')
和映射器
class File(object): pass
class FileType(object): pass
mapper(File, file_table, properties={'filetype': relation(FileType)})
mapper(FileType, file_table)
假设 Ftype 表包含 1:TXT 2:AVI 3:PPT
如果我像这样创建一个 File 对象,我想做的是:
file=File()
file.size=10
file.filetype= FileType('PPT')
Session.save(file)
Session.flush()
是文件表包含fileid:xxx,size:10,datatypeid:3
不幸的是,一个条目被添加到 FileType 表中,并且这个 id 被传播到 File 表中。
是否有一种聪明的方法可以使用 sqlalchemy 实现上述目标,而无需对 FileType 表进行查询以查看条目是否存在
谢谢
【问题讨论】:
标签: python sqlalchemy