我想创建给定类Task的对象,使用SQLAlchemy将其中一些存储在数据库中,并丢弃其他类。目前,这个类是用
创建的Base = declarative_base()
class Task(Base):
__tablename__ = 'tasks'
id = Column(Integer, primary_key=True)
hostID = Column(Integer, ForeignKey('hosts.id'))
name = Column(String)
host = relationship("Host", backref="tasks", cascade_backrefs=False)
def __init__(self, host, name):
self.host = host
self.name = name
class Host(Base):
__tablename__ = 'hosts'
id = Column(Integer, primary_key=True)
hostname = Column(String)
当我表演时
newTask1= GridTask(myHost, myName)
Session.add(newTask1)
Session.commit()
newTask2= GridTask(myHost, otherName)
Session.commit()
第一个任务存储在第一个提交 - 这是OK-而第二个任务存储在第二个提交中,我想避免的。
我的问题是,我如何声明Task和Host类,以便只有在明确要求时才会在DB上保留给定的实例?我正确使用“cascade_backrefs”?
感谢您的帮助。
答案 0 :(得分:1)
反之亦然(不用担心,在我尝试简单的测试之前,我甚至不知道使用的方向):
class Task(Base):
__tablename__ = 'tasks'
id = Column(Integer, primary_key=True)
hostID = Column(Integer, ForeignKey('hosts.id'))
name = Column(String)
host = relationship("Host", backref=backref("tasks", cascade_backrefs=False))
def __init__(self, host, name):
self.host = host
self.name = name
这是因为机制是: