I am trying to select two fields from separate tables using peewee. I believe my issue is with iterating over the resulting object.
I have the following code in 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))
That code generates the following 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`)
Executing that in MySQL Workbench I get a table with two fields: SystemHeader_Name, System_Value
.
I'm trying to figure out how to get the System_Value
from the query wrapper. If I do the following:
for s in sHeader_Value:
print s.SystemHeader_Name, s.System_Value
I am presented with an AttributeError
, stating that the 'System_Headers' object has no attribute 'System_Value'
.
Note that if I only try to do print s.SystemHeader_Name
, it executes flawlessly.
How do I capture the values for my System_Value
field?
I just figured out what the issue was. The data object it returns is a System_Headers
object, which is the model for that specific table. As such, that model does not have a System_Value
attribute. By adding naive()
to my peewee code it passed the attribute onto my System_Headers
model, thus allowing me to access the System_Value
field.
Below is the working code:
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())
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With