From: Timothy S. <ti...@op...> - 2005-01-12 23:01:16
|
Karsten Hilbert wrote: >>i'm wondering why i get the following error witht he code below >>i'm guessing it's probably somethign very simple i'm goign wrong, most >>likely to do with my new line escapes \ >>if there is a better way of formatting my query to fix this i'm all ears. >> >> >consider using > >query = """ >... any formatting you want >""" > >No \ needed. > >Karsten > > ok i did that b ut i still get the error cur.execute("""CREATE OR REPLACE FUNCTION week_num ( date ) File "/usr/local/lib/python2.3/site-packages/pyPgSQL/PgSQL.py", line 3072, in execute raise OperationalError, msg libpq.OperationalError: ERROR: syntax error at or near "20040701" at character 92 code snip cur.execute("""CREATE OR REPLACE FUNCTION week_num ( date ) RETURNS integer AS ' SELECT ($1 - (%s::date - extract(dow from %s::date)::integer + 1))/7;' LANGUAGE sql IMMUTABLE STRICT; CREATE OR REPLACE FUNCTION eow (integer) RETURNS date AS ' SELECT for_date FROM transactions WHERE (transactions.for_date - (%s::date - extract(dow from %s::date)::integer + 1))/7 = $1 AND EXTRACT(dow FROM transactions.for_date) = 0;' LANGUAGE sql IMMUTABLE STRICT; SELECT DISTINCT week_num(for_date), eow(week_num(for_date)), sum(dt.door_till) as door_till, sum(dt.bar) as bar, sum(dt.total) as income, sum(budget) as income_budget, sum(wages) as wages, sum(wages_budget) as wages_budget, sum(reads11pm) as reads11pm, sum(door_count) as door_count, sum(dt.promo) as promo, sum(gp) as gp, (sum(dt.total) / sum(door_count))::numeric (10,2) as head, sum(profit) as profit, sum(budget_profit) as budget_profit, (sum(budget_profit) / sum(dt.total))::numeric (10,2) as ror FROM transactions LEFT OUTER JOIN gp ON transactions.id = gp.id LEFT OUTER JOIN wages ON transactions.id = wages.id LEFT OUTER JOIN profit ON transactions.id = profit.id LEFT OUTER JOIN budgets ON transactions.id = budgets.id LEFT OUTER JOIN daily_stats ON transactions.id = daily_stats.id LEFT OUTER JOIN (SELECT t2.id, sum(CASE WHEN dt.till_name LIKE 'Main Bar%%' THEN dt.cash ELSE 0 END) as bar, sum(CASE WHEN dt.till_name = 'Front Door Till' THEN dt.cash ELSE 0 END) as door_till, (sum(CASE WHEN dt.till_name LIKE 'Main Bar%%' THEN dt.cash ELSE 0 END) + sum(CASE WHEN dt.till_name = 'Front Door Till' THEN dt.cash ELSE 0 END)) as total, sum(CASE WHEN dt.till_name = 'PR Cards' OR dt.till_name = 'Other Promo' THEN dt.cash ELSE 0 END) as promo from transactions as t2, daily_takings as dt WHERE t2.id = dt.id GROUP BY t2.id ) as dt ON dt.id = transactions.id WHERE transactions.for_venue = %s AND week_num(for_date) between %s and %s GROUP BY week_num(for_date) ORDER BY week_num(for_date)""" |