Python peewee - 从多个表中选择

Teh*_*Guy 8 python mysql sql orm peewee

我试图使用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))
Run Code Online (Sandbox Code Playgroud)

该代码生成以下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`)
Run Code Online (Sandbox Code Playgroud)

在MySQL Workbench中执行它我得到一个包含两个字段的表:SystemHeader_Name, System_Value.

我正在试图弄清楚如何System_Value从查询包装器中获取.如果我执行以下操作:

for s in sHeader_Value:
  print s.SystemHeader_Name, s.System_Value
Run Code Online (Sandbox Code Playgroud)

我被提出一个AttributeError,说明了'System_Headers' object has no attribute 'System_Value'.

请注意,如果我只是尝试这样做print s.SystemHeader_Name,它会完美无缺地执行.

如何捕获System_Value字段的值?

Teh*_*Guy 10

我只知道问题是什么.它返回的数据对象是一个System_Headers对象,它是该特定表的模型.因此,该模型没有System_Value属性.通过添加naive()到我的peewee代码,它将属性传递到我的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())
Run Code Online (Sandbox Code Playgroud)