[sqlalchemy] PG error I don't understand.

2012-08-21 Thread Warwick Prince
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)

Many thanks
Warwick

-- 
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.



Re: [sqlalchemy] PG error I don't understand.

2012-08-21 Thread Michael Bayer

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.