我正在尝试使用sqlalchemy将图形跟踪及其序列存储在2个单独的表中。
同一图表上的跟踪列表存储在ListContainer表中。每个ListItem表示跟踪中的项。每个跟踪项都有一个跟踪的外键,因为我想在跟踪中记下它的位置。
这是我目前的代码:
#store traces
class ListContainer():
id = Column(Integer, primary_key=True)
# timestamp = Column(DateTime, default=datetime.datetime.now())
name = Column(String)
#endclass
#store flow in traces
class ListItem():
id = Column(Integer, primary_key=True)
@declared_attr
trace_id = Column(Integer, ForeignKey(ListContainer.id))
item_pos = Column(Integer)
#start_ea
#end-ea
#endclass
class Trace(Base, ListContainer):
__tablename__="trace_table"
class TraceItem(Base, ListItem):
__tablename__="trace_items"
start_ea = Column(String)
但是,我目前收到以下错误:
trace_id = Column(Integer, ForeignKey(ListContainer.id))
^
SyntaxError: invalid syntax
使用mixin类将ForeignKey添加到表中的正确方法是什么?
答案 0 :(得分:1)
您只能修饰函数,以便出现语法错误。
如果您follow the docs,您将看到mixin中的外键应包含在装饰函数中。
class ListItem(object):
# ...
@declared_attr
def trace_id(cls):
return Column(Integer, ForeignKey(ListContainer.id))
# ...