您好我有一個表中3NF形式SQLAlchemy的查找表
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)
假設F-類表包含1:TXT 2:AVI 3:PPT
我會喜歡做的是如下,如果我創建一個文件對象是這樣的:
file=File()
file.size=10
file.filetype= FileType('PPT')
Session.save(file)
Session.flush()
是該文件表中包含的fileid:XXX,大小:10,datatypeid:3
不幸的條目被添加到文件類型表,這個ID被傳播到文件表。
有一個聰明的辦法做到實現上面的SQLAlchemy不用其他需要做的文件類型表的查詢,看是否該條目存在或不
感謝
這是正確的方向,但1)'__missing__'不會用新的值更新緩存,2)手動緩存的對象應小心處理,當他們從會議中清除。 – 2009-12-27 17:39:58
糟糕,修復了緩存邏輯。感謝您的注意。 – 2009-12-28 06:45:31