Python SQL Alchemy查询按父联接筛选的子表
我是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
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知道如何加入表。!非常感谢。知道我的桌子没有错也让我松了一口气。您知道是否有可能根据特定属性值删除重复项吗?如果我不想要多个描述相同的记录?