Я после этого руководства - http://docs.sqlalchemy.org/en/rel_1_0/orm/tutorial.htmlДобавление в нескольких внешних ключей в SQLAlchemy
Вот мой код
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='[email protected]')]
Я пытаюсь выяснить, как добавить несколько адресов электронной почты в запись Джека после факта. Когда я пытаюсь снова
candidate.addresses = [Address(email_address='[email protected]')]
стирает внешний ключ для [email protected]
в таблице адресов (она изначально была 1) и делает его NULL
.
Как добавить несколько внешних ключей после создания начальной записи?
просто должны быть в состоянии сделать 'кандидата. address.append (Адрес (email_address = "[email protected]")) ' – reptilicus