我正在尝试使用peewee从单独的表中选择两个字段。我相信我的问题是迭代结果对象。
我在Python中有以下代码:
sHeader_Value = (System_Headers
.select(System_Headers.SystemHeader_Name, System_Data.System_Value)
.join(System_Header_Link)
.join(System_Data_Link)
.join(System_Data))
该代码生成以下SQL:
SELECT t1.`SystemHeader_Name`, t4.`System_Value`
FROM `system_headers` AS t1
INNER JOIN `system_header_link` AS t2 ON (t1.`SystemHeader_ID` = t2.`SystemHeader_ID`)
INNER JOIN `system_data_link` AS t3 ON (t2.`SystemHeaderLink_ID` = t3.`SystemHeaderLink_ID`)
INNER JOIN `system_data` AS t4 ON (t3.`SystemData_ID` = t4.`SystemData_ID`)
在MySQL Workbench中执行该操作我得到一个包含两个字段的表:SystemHeader_Name, System_Value
。
我正在试图弄清楚如何从查询包装器中获取System_Value
。如果我执行以下操作:
for s in sHeader_Value:
print s.SystemHeader_Name, s.System_Value
我收到AttributeError
,说明'System_Headers' object has no attribute 'System_Value'
。
请注意,如果我只尝试print s.SystemHeader_Name
,它会执行完美。
如何捕获System_Value
字段的值?
答案 0 :(得分:10)
我只知道问题所在。它返回的数据对象是System_Headers
对象,它是该特定表的模型。因此,该模型没有System_Value
属性。通过向我的peewee代码添加naive()
,它会将该属性传递到我的System_Headers
模型,从而允许我访问System_Value
字段。
以下是工作代码:
sHeader_Value = (System_Headers
.select(System_Headers.SystemHeader_Name, System_Data.System_Value)
.join(System_Header_Link)
.join(System_Data_Link)
.join(System_Data)
.naive())