On Aug 21, 2012, at 6:32 PM, Warwick Prince wrote:

> Hi 
> 
> I have created a simple update like this on a PG database via PG8000;
> 
> table=Table('invoice_line_items', meta, autoload=True)
> query = table.update()
> query = query.where(and_(eq(table.c.InvBook, 'SC'), eq(table.c.InvNum, 
> 12862), eq(table.c.InvLine, 1)))
> query = query.values(**data)
> query.execute()
> 
> I'm getting this error, and looking at the SQL (from the error message), I 
> can't see what is wrong or why PG is complaining.
> 
> ('ERROR', '42712', 'table name "invoice_line_items" specified more than 
> once') u'UPDATE invoice_line_items SET "DocType"=%s, "LineType"=%s, 
> "Complete"=%s, "Group"=%s, "Product"=%s, "SerialNumber"=%s, "Description"=%s, 
> "Warehouse"=%s, "UnitCode"=%s, "UnitQty"=%s, "Supplier"=%s, "Active"=%s, 
> "Customer"=%s, "BillTo"=%s, "Date"=%s, "ConsignmentFlag"=%s, "TaxFlag"=%s, 
> "HiddenFlag"=%s, "JoinFlag"=%s, "OrderQty"=%s, "ReserveQty"=%s, 
> "BackorderQty"=%s, "InvoiceQty"=%s, "ShippedQty"=%s, "Currency"=%s, 
> "CostEach"=%s, "SellEach"=%s, "TotalEx"=%s, "Total"=%s, "InputTax"=%s, 
> "OutputTax"=%s, "TaxTotal"=%s, "BudgetCostEx"=%s, "BudgetCostInc"=%s, 
> "Weight"=%s, "GLRevenue"=%s, "GLCost"=%s, "GLCostFrom"=%s, "PriceLevel"=%s, 
> "OrderType"=%s, "StatusCode"=%s, "ReasonCode"=%s, "LotNumber"=%s, "GST"=%s, 
> "BookingID"=%s, "StampDuty"=%s, "Insurance"=%s, "PriceSource"=%s, 
> "SalesRep"=%s, "ETADate"=%s, "CostCentreRevenue"=%s, "CostCentreCost"=%s, 
> "CostCentreCostFrom"=%s, "RebateRule"=%s, "CustOrderUnitCode"=%s, 
> "CustOrderQty"=%s, "FreightMode"=%s, "FreightExEach"=%s, 
> "FreightExApplied"=%s, "GLFreight"=%s, "BundleGroup"=%s, "BundleOrderQty"=%s, 
> "BundleComponentQty"=%s, "MinSell"=%s, "DiscTaxApplyFlag"=%s, "yearWeek"=%s, 
> "yearMonth"=%s, "yearQuarter"=%s, colour=%s, "feeCode"=%s, "feeTotalEX"=%s 
> FROM invoice_line_items WHERE invoice_line_items."InvBook" = %s AND 
> invoice_line_items."InvNum" = %s AND invoice_line_items."InvLine" = %s' 
> (u'C', u'P', u'Y', u'FIL', u'OBS3E', u'', u'ORGANIC SUPREME SKIN ON', u'S01', 
> u'KG', 1.0, u'MANDJ', u'Y', u'S2550', u'S2550', datetime.date(2007, 6, 5), 
> u'N', u'N', u'N', u'N', -2.4, 0.0, 0.0, 0.0, 0.0, u'AUD', 0.0, 19.5, -46.8, 
> -46.8, u'', u'N', 0.0, 0.0, 0.0, -2.4, u'101-30010-000', u'101-10530-000', 
> u'101-10530-000', u'L', u'', u'', u'', u'', 0.0, 0, 0.0, 0.0, u'L', u'SAM', 
> None, u'', u'', u'', u'', u'KG', -2.4, u'', 0.0, 0.0, u'', u'', 0.0, 0.0, 
> 0.0, u'', u'2007-22', u'2007-06', u'2007-02', None, None, None, u'SC', 12862, 
> 1)

so there's a FROM in there, which is a PG syntax we've recently started 
supporting known as UPDATE..FROM.  It's supposed to be used when there are 
additional tables in the UPDATE statement other than the target table.   But 
here we have UPDATE invoice_line_items SET ... FROM invoice_line_items WHERE 
...   which is wrong.    What would cause that here would be if you have two 
separate Table objects both called "invoice_line_items" - one is mentioned as 
the subject via table.update(), and the other would be embedded in the WHERE 
clause somehow.   The code you've illustrated doesn't show any way this might 
be happening.   Something is different in the actual code.

-- 
You received this message because you are subscribed to the Google Groups 
"sqlalchemy" group.
To post to this group, send email to sqlalchemy@googlegroups.com.
To unsubscribe from this group, send email to 
sqlalchemy+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/sqlalchemy?hl=en.

Reply via email to