Re: ISQLQuote vs. str subclass

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

In response to

Browse psycopg by date

  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