problem with invalid characters

Timothy Smith <timothy-/[email protected]> Tue, 11 Jan 2005 20:53:49 +1000
Newsgroups gmane.comp.python.db.pypgsql.user
Message-ID <[email protected]>
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.
thanks in advance

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


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)", (YearDate, YearDate, 
YearDate, YearDate,Venue, FromWeek, ToWeek))


-------------------------------------------------------
The SF.Net email is sponsored by: Beat the post-holiday blues
Get a FREE limited edition SourceForge.net t-shirt from ThinkGeek.
It's fun and FREE -- well, almost....http://www.thinkgeek.com/sfshirt