From: | Jonathan Rogers <jrogers(at)socialserve(dot)com> |
---|---|
To: | Daniele Varrazzo <daniele(dot)varrazzo(at)gmail(dot)com> |
Cc: | "psycopg(at)postgresql(dot)org" <psycopg(at)postgresql(dot)org> |
Subject: | Re: ISQLQuote vs. str subclass |
Date: | 2015-07-31 18:53:21 |
Message-ID: | 55BBC421.20504@socialserve.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | psycopg |
On 07/31/2015 12:08 PM, Daniele Varrazzo wrote:
> On Fri, Jul 31, 2015 at 3:57 PM, Jonathan Rogers
> <jrogers(at)socialserve(dot)com> wrote:
>> I have a custom subclass of str called LiteralValue, the purpose of
>> which is to represent a string which should be passed to Postgres
>> unmodified. Its getquoted() method simply returns itself. This type
>> worked as intended with psycopg2 up to version 2.2.x. However, versions
>> of psycopg2 2.3 and newer no longer call getquoted() on objects of type
>> LiteralValue. Is this an expected change in behavior?
>
> I don't think so, not intentionally at least. If the class is
> self-adapting, does it expose a __conform__() method? If it has an
> associated wrapper is it registered?
>
> http://initd.org/psycopg/docs/advanced.html#adapting-new-python-types-to-sql-syntax
>
> If you post the implementation I can try and take a look.
Here's a sample script which demonstrates the difference in behavior.
Using psycopg2 2.2.1, it prints four lines of "select 5". Using psycopg2
2.3, the line using a LiteralValue is "select '5'".
--
Jonathan Ross Rogers
Attachment | Content-Type | Size |
---|---|---|
literal_value.py | text/x-python | 643 bytes |
From | Date | Subject | |
---|---|---|---|
Next Message | Gregory Arenius | 2015-08-20 19:34:10 | How do I convert numpy NaN objects to SQL nulls? |
Previous Message | Daniele Varrazzo | 2015-07-31 16:08:56 | Re: ISQLQuote vs. str subclass |