I'm new to MySQL Python connector and I'm trying to find out if in prepared statement I can substitute non-parameters? Here's example of query that I need to execute repeatedly while decrementing the counter:
UPDATE
material_forecast_series sfs
JOIN material_forecast sf ON sfs.F_ID = sf.F_ID
JOIN material_demand sd ON sd.date_ID = sf.date_ID
AND sd.D_ID = sfs.D_ID
JOIN material_demand_series ds ON sfs.D_ID = ds.D_ID
JOIN OMG_membership om ON ds.item_ID = om.item_ID
JOIN material_FE sfe ON sfe.F_ID = sf.F_ID
SET sfe.v2 = IF(sf.v2 = 0, NULL, (sd.quantity - sf.v2) / sf.v2)
WHERE
sfs.forecast_ID = 15
AND ds.demand_ID = 9
AND ds.O_ID = 2
AND om.OG_ID = 318
AND sd.date_ID = 275
AND sfe.date_ID = 274
In the snippet above last parameter sfe.date_ID will be decremented in the loop. No problem there, I will simply do sfe.date_ID=%s. However in this line: SET sfe.v2 = IF(sf.v2 = 0, NULL, (sd.quantity - sf.v2) / sf.v2) literal v2 needs to be changed to v3, v4, v5... each loop iteration. No problem if I'm to use Python parameter substitution and regular cursor but I want to use prepared statement for performance reason.
Any other tricks to improve performance are greatly appreciated as well