查询多个表sqlalchemy

时间:2014-06-05 17:23:11

标签: python sqlalchemy pyramid

我试图查询4个表。它们都受外键约束,并且它们都定义了关系。我遇到的问题是我似乎无法获得我追求的价值。

我有4张桌子:

TDeviceReport:

ixDeviceReport(int, primary key) 
ixDeviceType(int, foreign key)   
ixReportType(int, foreign key)

TReportType:

ixReportType(int, primary key)   
sReportType(string) 

TReportSection

ixReportSection(int, primary key)          
ixReportType(int, foreign key)
ixSection(int, foreign key)

和TSection:     ixSection(int,primary key)     sSection(字符串)

我正在尝试获取属于TSection.sSection的所有部分名称(deviceTypeID)。问题是我对sqlAlchemy有点新,不知道如何去做。我试图设置一个查询,但我没有得到任何结果。

for section in DBSession.query(TDeviceReport, TReportType, TReportSection, TSection).join(TReportType).join(TReportSection).join(TSection).filter(TDeviceReport.ixDeviceType==deviceTypeID).all():
    print "------------------------------------------------"
    print "section : " + str(section )

任何指导都将不胜感激

修改 我稍微重新查询了一下这是打印的结果

#get section headers
sections = []
for section in DBSession.query(TSection.sSection).join(TReportSection).join(TReportType).join(TDeviceReport).filter(TDeviceReport.ixDeviceType==deviceTypeID).all():
    sections.append(str(section[0]))
    print "section: " + str(section) + "------------------------------------------"

印刷结果:

section: (u'Trip Unit Results',)------------------------------------------
section: (u'Generic Header',)------------------------------------------
section: (u'Circuit Breaker Data',)------------------------------------------
section: (u'Trip Unit Data',)------------------------------------------
section: (u'Sensor Data',)------------------------------------------
section: (u'Insulation Resistance',)------------------------------------------
section: (u'Contact Resistance',)------------------------------------------
section: (u'Breaker Inspection',)------------------------------------------
section: (u'Cell Inspection',)------------------------------------------

1 个答案:

答案 0 :(得分:1)

您可以尝试此print section.TSection.sSection。 'section'应该是一个实例,在这种情况下,这是有效的。如果这不起作用,那么您的查询和加入内容是错误的,在这种情况下,这会有所帮助:http://docs.sqlalchemy.org/en/rel_0_9/orm/query.html

你没告诉我这是什么打印:print "section : " + str(section )。如果你能告诉我,如果它是空的那么你的查询是错误的,那将会有很大的帮助。