Hinzufügen ich diesem Handbuch folgende bin - http://docs.sqlalchemy.org/en/rel_1_0/orm/tutorial.htmlin mehrere Fremdschlüssel in SQLAlchemy
Hier mein Code
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)
ist, wenn ich einen Datensatz für die User
Tabelle zu erstellen, ich mache es wie folgt aus:
candidate = User(name='Jack', fullname='Jack Bean', password='blah')
Und in E-Mail-Adressen hinzufügen, ich tue es dies wie (nach der Anleitung):
candidate.addresses = [Address(email_address='[email protected]')]
Ich versuche herauszufinden, wie man Jacks Protokoll nach der Tat mehrere E-Mail-Adressen hinzufügen kann. Als ich es erneut versuchen
candidate.addresses = [Address(email_address='[email protected]')]
Es löscht den Fremdschlüssel für [email protected]
in der Adresstabelle (es war ursprünglich 1) und macht es NULL
.
Wie füge ich nach dem Erstellen des ersten Datensatzes mehrere Fremdschlüssel hinzu?
sollte nur in der Lage sein, 'Kandidaten zu tun. addresses.append (Adresse (email_adresse = "[email protected]")) ' – reptilicus