ich arbeite mich zur Zeit in sqlalchemy ein.
Leider bin ich gerade auf ein Thema gestoßen, bei dem ich nicht weiter weis.
In meiner Datenbank befinden sich zwei Objekte, nämlich Sendung und Adresse.
Jede Sendung hat eine Versender- und Empfängeradresse.
Alle id Spalten sind als Autoinkrement eingestellt.
Code: Alles auswählen
from sqlalchemy.orm import *
from sqlalchemy import *
from sqlalchemy.ext.declarative import *
engine = create_engine('sqlite:///testdb', echo=True)
Base = declarative_base()
class Adresse(Base):
__tablename__ = 'Adresse'
id = Column(Integer, primary_key=True)
name1 = Column(String)
class Sendung(Base):
__tablename__ = 'Sendung'
id = Column(Integer, primary_key=True)
empf_id = Column(String, ForeignKey('Adresse.id'))
vers_id = Column(String, ForeignKey('Adresse.id'))
empfaenger = relationship("Adresse", primaryjoin="Adresse.id==Sendung.empf_id")
versender = relationship("Adresse", primaryjoin="Adresse.id==Sendung.vers_id")
vers1 = Adresse()
vers1.name1 = "Mustermann"
empf1 = Adresse()
empf1.name1 = "Musterfrau"
send1 = Sendung()
send1.versender = vers1
send1.empfaenger = empf1
Session = sessionmaker(bind=engine)
session = Session()
session.add(send1)
session.commit()
Jetzt zu meinen Problem:
Es kann vorkommen, dass eine neue Sendung eine Adresse hat, die bereits in der Datenbank vorhanden ist.
Code: Alles auswählen
vers2 = Adresse()
vers2.name1 = "Mustermann"
empf2 = Adresse()
empf2.name1 = "Musterfrau"
send2 = Sendung()
send2.versender = vers2
send2.empfaenger = empf2
session.add(send2)
session.commit()
Gibt es irgendeine Möglichkeit, die das verhindert.
Sprich, falls bereits eine Adresse mit gleichem Namen vorhanden ist, soll die neue Adresse verworfen werden
und der Sendung die bereits vorhandene in der Datenbank zugewiesen werden.
Ich hoffe ihr könnt mir weiterhelfen.
Gruß
python-hulk