Python SQL Alchemy查询按父联接筛选的子表

Python SQL Alchemy查询按父联接筛选的子表,python,sqlalchemy,Python,Sqlalchemy,我是SQL Alchemy的新手,目前正在开发一个用于工作的性能工具,但正在与查询作斗争。我试图做的是查询一个子表,其中它的父表匹配一个特定的筛选器 可能是我的桌子设置不正确,这不允许我做我想做的事情 这是我的模型 class TestRecord(db.Model): """ """ id = db.Column(db.Integer, primary_key=True) test_process = db.Column

我是SQL Alchemy的新手,目前正在开发一个用于工作的性能工具,但正在与查询作斗争。我试图做的是查询一个子表,其中它的父表匹配一个特定的筛选器

可能是我的桌子设置不正确,这不允许我做我想做的事情

这是我的模型

class TestRecord(db.Model):
"""

"""
    id =                    db.Column(db.Integer, primary_key=True)
    test_process =          db.Column(db.String(60))
    test_software_ident =   db.Column(db.VARCHAR(15))
    uut_part_number =       db.Column(db.VARCHAR(30))
    uut_serial_number =     db.Column(db.VARCHAR(30))
    socket_reference =      db.Column(db.VARCHAR(10))
    operator =              db.Column(db.VARCHAR(100))
    date_start =            db.Column(db.Date)
    time_start =            db.Column(db.Time)
    date_end =              db.Column(db.Date)
    time_end =              db.Column(db.Time)
    result =                db.Column(db.VARCHAR(20))
    testset_part_number =   db.Column(db.VARCHAR(10))
    testset_serial_number = db.Column(db.VARCHAR(10))
    testset_cal_date =      db.Column(db.Date)
    tests =                 db.relationship('Test', backref='test_record', lazy='dynamic')

class Test(db.Model):
"""

"""
    id = db.Column(db.Integer, primary_key=True)
    test_record_id = db.Column(db.Integer, db.ForeignKey(TestRecord.id))
    test_block = db.Column(db.VARCHAR(10))
    test_number = db.Column(db.VARCHAR(10))
    test_description = db.Column(db.Text)
    reading = db.Column(db.VARCHAR(20))
    upper_limit_exp = db.Column(db.VARCHAR(20))
    lower_limit = db.Column(db.VARCHAR(20))
    units = db.Column(db.VARCHAR(20))
    result = db.Column(db.VARCHAR(20))
我试图在这些表中实现的是,1个TestRecord可以有许多测试

我尝试运行的查询是针对每个测试的,其中其test_编号等于“START”,其父.uut_part_编号等于一个值

我目前的问题是:

records = Test.query.join(Test.test_record_id, aliased=True).filter_by(test_number="/START")
                               .filter(TestRecord.uut_part_number == session['part_number'])
我一直在阅读SQL Alchemy文档,无论我尝试哪种组合,我似乎都无法得到我想要的结果。

这个怎么样:

records = Test \
    .query \
    .join(TestRecord) \
    .filter(Test.test_number == "/START") \
    .filter(TestRecord.uut_part_number == session['part_number'])
这将为您提供所有
Test
记录,其中
Test.Test\u number
/START
,通过加入
TestRecord
,您可以按
TestRecord.uut\u part\u number
匹配输入
part\u number
的记录进行筛选


您可以使用
TestRecord
加入
Test
,因为
Test
TestRecord
之间只有一个外键字段,所以SQLalchemy知道如何加入表。

!非常感谢。知道我的桌子没有错也让我松了一口气。您知道是否有可能根据特定属性值删除重复项吗?如果我不想要多个描述相同的记录?