[英]Adding in multiple foreign keys in SQLAlchemy
我正在遵循本指南-http://docs.sqlalchemy.org/en/rel_1_0/orm/tutorial.html
這是我的代碼
from sqlalchemy import Column, Integer, String
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker
from sqlalchemy import ForeignKey
from sqlalchemy.orm import relationship
engine = create_engine('sqlite:///test.db', echo=True)
Base = declarative_base()
Session = sessionmaker(bind=engine)
session = Session()
class User(Base):
__tablename__ = 'users'
id = Column(Integer, primary_key=True)
name = Column(String)
fullname = Column(String)
password = Column(String)
def __repr__(self):
return "<User(name='%s', fullname='%s', password='%s')>" % (self.name, self.fullname, self.password)
class Address(Base):
__tablename__ = 'addresses'
id = Column(Integer, primary_key = True)
email_address = Column(String, nullable=False)
user_id = Column(Integer, ForeignKey('users.id'))
user = relationship("User", back_populates = 'addresses')
def __repr__(self):
return "<Address(email_address='%s')>" %self.email_address
User.addresses = relationship ("Address", order_by=Address.id, back_populates="user")
Base.metadata.create_all(engine)
當我為User
表創建記錄時,我會這樣做:
candidate = User(name='Jack', fullname='Jack Bean', password='blah')
為了添加電子郵件地址,我這樣做是這樣的(遵循指南):
candidate.addresses = [Address(email_address='jack_bean@gmail.com')]
我試圖弄清楚事實之后如何在傑克的記錄中添加多個電子郵件地址。 當我再試一次
candidate.addresses = [Address(email_address='jack@gmail.com')]
它將擦除地址表中jack_bean@gmail.com
的外鍵(最初為1)並將其設置為NULL
。
創建初始記錄后如何添加多個外鍵?
而不是做:
candidate.addresses = [Address(email_address='jack_bean@gmail.com')]
如果在創建候選人后需要向其添加地址,請執行以下操作:
candidate.addresses.append(Address(email_address="new@new.com"))
db_session.commit()
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.