Ich habe die folgenden 3 SQL Alchemy ModelleWie Sie diese Fremdschlüsselbeziehungen in SQLAlchemy abfragen?
class MyModelA(db.Model):
a_id = db.Column(db.Integer, nullable=False, primary_key=True)
my_field1 = db.Column(db.String(1024), unique=True)
class MyModelB(db.Model):
b_id = db.Column(db.Integer, nullable=False, primary_key=True)
my_field2 = db.Column(db.String(1024), nullable=True)
def my_method(self, arg_my_field1):
pass # what goes here??
class MyModelC(db.Model, Timestamp):
c_id = db.Column(db.Integer, nullable=False, primary_key=True)
a_id = db.Column(db.Integer, db.ForeignKey(MyModelA.a_id), default=lambda: MyModelA.query.filter(MyModelA.my_field1 == 'XYZ').one().a_id)
a = db.relationship('MyModelA', backref=db.backref('my_model_c'))
b_id = db.Column(db.Integer, db.ForeignKey(MyModelB.b_id), nullable=False)
b = db.relationship('MyModelB', backref=db.backref('my_model_c'))
my_field3 = db.Column(db.String(1024), unique=True)
__table_args__ = (db.UniqueConstraint('a_id', 'b_id', name='unique_constraint_aid_bid'),)
Bei dem Verfahren my_method
, ich möchte den my_field3
Bereich der Instanz von MyModelC
dass (Punkte auf self
und verweist auf die MyModelA
zurückzuversetzen my_field1
als Fall hat -unempfindliche Übereinstimmung von arg_my_field1
). Es sollte maximal eine solche Instanz geben. Wenn keine solche Instanz von MyModelC
existiert, geben Sie None
zurück.
Welche SQLAlchemy Abfrage sollte ich in my_method
schreiben, um dieses Ergebnis zu erreichen? Hier