2
class A(Base):
__tablename__ = 'a'
id = Column(Integer, primary_key=True)
name = Column(String(1000))
class B(Base):
__tablename__ = 'b'
id = Column(Integer, primary_key=True)
name = Column(String(1000))
class C(Base):
__tablename__ = 'c'
id = Column(Integer, primary_key=True)
b_id = Column(Integer, ForeignKey('b.id'))
name = Column(String(1000))
a_id = Column(Integer, ForeignKey('a.id'))
b = relationship('B', backref=backref('cb'), foreign_keys = b_id)
a = relationship('A', backref=backref('ca'), foreign_keys = a_id)
connect = engine.connect()
Base.metadata.create_all(bind=engine)
我創建的類創建表,並與SQLAlchemy的將數據添加到MySQL數據庫的發揮。我現在面臨的問題如下。添加相關數據到MySQL數據庫SQLAlchemy的
如果我想添加一個條目到表c我所需要的就是這樣的代碼。
c_ent = C(name = 'c1')
a1 = A(name = 'a1')
b1 = B(name = 'b1')
a1.ca = [c_ent]
b1.cb = [c_ent]
list1 = [a1, b1]
sess = create_session(name)
for i in list1:
sess.add(i)
sess.commit()
sess.close()
這一切工作我需要它的方式和在c入口B_ID和A_ID外鍵匹配相應的ID的A和B。
但是,假設在提交數據庫並關閉會話後,我現在決定向c'c2'添加另一個條目。我希望這個條目與我的第一個表有相同的關係(以便a_id和b_id與名爲'c1'的條目相同)。但是,如果我使用類似於第一個條目的代碼,sqlalchemy將在表a和b中創建重複條目,名稱爲'a1'和'b1',其id編號爲2而不是1.然後,我在表c中的條目將有正確的身份證號碼,但他們將被鏈接到重複的條目。
我希望能夠向c中添加一個條目,然而我多次選擇並將它與表a和b關聯,而無需每次都在a和b中創建新條目。我怎樣才能避免這種冗餘?
此方法仍然有與原始問題相同的問題,但感謝您試圖幫助 –
而這個問題在哪裏?你的問題是創建新的條目。在我的代碼中,我沒有創建A和B的新條目,我只使用了你已有的條目。 –
對不起,我可能還不夠具體。我並不擔心在我的代碼中有新的條目,而是由實際數據庫中的代碼創建的新條目。 –