Re: Named Parameters Issue - ORA-01460: unimplemented or unreasonable conversion requested

Anurag Chourasia <[email protected]>
Newsgroups gmane.comp.python.db.cx-oracle
Message-ID <CANFgmFC9mS=9_0daqZiNMJg6ZNoH1ZY9LenQS-ZkL0F49bZxiQ@mail.gmail.com>
Posting this one more time to see if someone has more ideas.

I am finally sticking to using the queries of this sort

T_cursor.execute("SELECT DISTINCT(TAG_STATUS) FROM TAG_HIST WHERE TAG_NBR =
'%s' " %(TAG_NBR))

I know that this is not the best way of writing queries but I am out of
options at the moment with the implementation date nearing by.

Thanks for your help and guidance.

Regards,
Anurag

On Fri, Apr 5, 2013 at 3:00 PM, Anurag Chourasia <[email protected]
> wrote:

> Hi Ivanelson,
>
> I am on Windows Server 2003. My original post has all the details.
>
> Basically the following code "Works" on my clients machine from both
> within Apache and Python Command line
>
>     T_cursor.execute("SELECT DISTINCT(TAG_STATUS) FROM TAG_HIST WHERE
> TAG_NBR = '%s' " %(TAG_NBR))
>
>
>
> But the following code "Does Not Work" from Within Apache but Works from
> Python Command line
>
>     T_cursor.execute("SELECT DISTINCT(TAG_STATUS) FROM TAG_HIST WHERE
> TAG_NBR = :TAG_NBR " ,{'TAG_NBR':TAG_NBR})
>
> Regards,
> Anurag
>
>
> On Fri, Apr 5, 2013 at 2:55 PM, Ivanelson Nunes <[email protected]>wrote:
>
>> Check the environment variables. I set up in  [1] /etc/apache2/envvars
>>
>> Example my file envvars:
>> ## Settings My Oracle
>> export ORACLE_HOME=/usr/lib/oracle/11.2/client64
>> export LD_LIBRARY_PATH=/usr/lib/oracle/11.2/client64/lib
>>
>>
>> [1] Ubuntu
>>
>>
>>
>> 2013/4/5 Anurag Chourasia <[email protected]>
>>
>>> Dear All...I encountered another behavior today.
>>>
>>> This issue presents itself only when the cx_Oracle code is run inside
>>> the Web App (Hosted on Apache).
>>>
>>> If i run the same code with named parameters from within the python
>>> command line then the query runs just fine.
>>>
>>> Appreciate if someone could provide me some ideas.
>>>
>>> Regards,
>>> Anurag
>>>
>>>
>>> On Wed, Apr 3, 2013 at 10:35 PM, Anurag Chourasia <
>>> [email protected]> wrote:
>>>
>>>> So the problem is only with named parameters? Or is there any other
>>>> alternate recommended way? Does cx_Oracle support positional parameters?
>>>>
>>>> Shall I continue using the following way of writing queries then?
>>>> cursor.execute("SELECT DISTINCT(TAG_STATUS) FROM TAG_HIST WHERE TAG_NBR
>>>> = '%s' " %(TAG_NBR))
>>>>
>>>> In any case I will give this a shot with 64 Bit version of cx_Oracle
>>>> tomorrow but I am not sure of that will make any difference.
>>>>
>>>> Appreciate your feedback.
>>>>
>>>> Regards,
>>>> Anurag
>>>>
>>>> On Wed, Apr 3, 2013 at 7:41 PM, Amaury Forgeot d'Arc <
>>>> [email protected]> wrote:
>>>>
>>>>> Hi,
>>>>>
>>>>> This thread:
>>>>> https://forums.oracle.com/forums/thread.jspa?threadID=507725
>>>>> Suggests a bug in Oracle 10.2.0.1.0...
>>>>>
>>>>>
>>>>> 2013/4/4 Anurag Chourasia <[email protected]>
>>>>>
>>>>>> Type of TAG_NBR in Python is <type 'str'>
>>>>>> TAG_HIST.TAG_NBR column is varchar2 (100)
>>>>>>
>>>>>> In this particular example, the value of TAG_NBR was 'ABC'
>>>>>>
>>>>>> Regards,
>>>>>> Anurag
>>>>>>
>>>>>>
>>>>>> On Wed, Apr 3, 2013 at 6:48 PM, Amaury Forgeot d'Arc <
>>>>>> [email protected]> wrote:
>>>>>>
>>>>>>> Hi,
>>>>>>>
>>>>>>> 2013/4/3 Anurag Chourasia <[email protected]>
>>>>>>>
>>>>>>>> Hi Joel,
>>>>>>>>
>>>>>>>> Yes. It is a 64 Bit Server using 32 Bit version of
>>>>>>>> cx_Oracle.....Could that be a problem? Given that on the same server
>>>>>>>>
>>>>>>>> This 'Works Fine'
>>>>>>>>
>>>>>>>> cursor.execute("SELECT DISTINCT(TAG_STATUS) FROM TAG_HIST WHERE TAG_NBR = '%s' " %(TAG_NBR))
>>>>>>>>
>>>>>>>> ......but this 'Does Not'
>>>>>>>>
>>>>>>>> cursor.execute("SELECT DISTINCT(TAG_STATUS) FROM TAG_HIST WHERE TAG_NBR = :TAG_NBR " ,{'TAG_NBR':TAG_NBR})
>>>>>>>>
>>>>>>>>
>>>>>>> What is the type of the TAG_NBR variable in Python?
>>>>>>> And what is the type of the TAG_HIST.TAG_NBR column?
>>>>>>>
>>>>>>>
>>>>>>>>  Regards,
>>>>>>>> Anurag
>>>>>>>>
>>>>>>>> On Wed, Apr 3, 2013 at 4:50 PM, Joel Slowik <[email protected]>wrote:
>>>>>>>>
>>>>>>>>>  64-bit server but using 32-bit cx_oracle?
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> *From:* Anurag Chourasia [mailto:[email protected]]
>>>>>>>>> *Sent:* Wednesday, April 03, 2013 4:46 PM
>>>>>>>>> *To:* cx-oracle-users-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org; [email protected]
>>>>>>>>> *Subject:* [cx-oracle-users] Named Parameters Issue - ORA-01460:
>>>>>>>>> unimplemented or unreasonable conversion requested
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> I have encountered a problem after implementing these changes
>>>>>>>>> (named parameters in RAW SQL Queries as per Python DB-API) and I am without
>>>>>>>>> any clue at the moment.
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> These changes worked just fine on my Development Server
>>>>>>>>>
>>>>>>>>>    - Windows XP
>>>>>>>>>    - Oracle XE SQL*Plus: Release 11.2.0.2.0
>>>>>>>>>    - cx_Oracle-5.1.2-11g.win32-py2.7
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> However, when deployed on my Client's Test Server, execution of
>>>>>>>>> all queries fail with this error.
>>>>>>>>>
>>>>>>>>>    - Windows Server 2003
>>>>>>>>>    - Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 -
>>>>>>>>>    64bi
>>>>>>>>>    - cx_Oracle-5.1.2-10g.win32-py2.7
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> Traceback (most recent call last):
>>>>>>>>>
>>>>>>>>>   File "C:/Program Files/App_Logic/..\apps\views.py", line 400, in
>>>>>>>>> regularize_TAG
>>>>>>>>>
>>>>>>>>>     T_cursor.execute("SELECT DISTINCT(TAG_STATUS) FROM TAG_HIST
>>>>>>>>> WHERE TAG_NBR = :TAG_NBR " ,{'TAG_NBR':TAG_NBR})
>>>>>>>>>
>>>>>>>>> DatabaseError: ORA-01460: unimplemented or unreasonable conversion
>>>>>>>>> requested
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> Basically the following code "Works" on my clients machine
>>>>>>>>>
>>>>>>>>>     T_cursor.execute("SELECT DISTINCT(TAG_STATUS) FROM TAG_HIST
>>>>>>>>> WHERE TAG_NBR = '%s' " %(TAG_NBR))
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> But the following code "Does Not Work"
>>>>>>>>>
>>>>>>>>>     T_cursor.execute("SELECT DISTINCT(TAG_STATUS) FROM TAG_HIST
>>>>>>>>> WHERE TAG_NBR = :TAG_NBR " ,{'TAG_NBR':TAG_NBR})
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> Appreciate if someone could help me through this issue.
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> Regards,
>>>>>>>>>
>>>>>>>>> Anurag
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> On Tue, Apr 2, 2013 at 5:38 PM, Anurag Chourasia <
>>>>>>>>> [email protected]> wrote:
>>>>>>>>>
>>>>>>>>> Thanks Jani...With that my issue is solved.
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> Regards
>>>>>>>>>
>>>>>>>>> Guddu
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> On Tue, Apr 2, 2013 at 1:35 AM, Jani Tiainen <[email protected]>
>>>>>>>>> wrote:
>>>>>>>>>
>>>>>>>>> 2.4.2013 5:51, Anurag Chourasia kirjoitti:
>>>>>>>>> > *Dear friends...Could you please help me with this issue?*
>>>>>>>>> >
>>>>>>>>> > *Steps to reproduce?*
>>>>>>>>> > 1. Fetch the value of a varchar2 column that has Null as its
>>>>>>>>> current value.
>>>>>>>>> > 2. Use the fetched value to update any table's column.
>>>>>>>>> >
>>>>>>>>> > *Expected output?*
>>>>>>>>> > Instead of updating to Null, the table column gets updated to a
>>>>>>>>> string value of 'None'
>>>>>>>>> >
>>>>>>>>> > *Version in use*
>>>>>>>>> > Python 2.7.3 (default, Apr 10 2012, 23:31:26) [MSC v.1500 32 bit
>>>>>>>>> (Intel)] on win32
>>>>>>>>> > cx_Oracle - 5.1.2
>>>>>>>>> > Oracle 11G
>>>>>>>>> >
>>>>>>>>> > *Additional information*
>>>>>>>>> >
>>>>>>>>> > This could be because in the update query, I am using '%s'
>>>>>>>>> format....for example
>>>>>>>>> >
>>>>>>>>> > cursor.execute("UPDATE EMP SET NAME='%s'" %(None))
>>>>>>>>> >
>>>>>>>>> > But there is no other way. If i simply use
>>>>>>>>> >
>>>>>>>>> > cursor.execute("UPDATE EMP SET NAME=%s" %(None)) then I get a
>>>>>>>>> syntax error.
>>>>>>>>> >
>>>>>>>>> > There should be a way to update a column to NULL
>>>>>>>>>
>>>>>>>>> Why are you trying to inject data instead of using standard Python
>>>>>>>>> API
>>>>>>>>> to do things right?
>>>>>>>>>
>>>>>>>>> If you persists constructing query string completely by hand (like
>>>>>>>>> you
>>>>>>>>> have done), then you have to take care of NULL by yourself.
>>>>>>>>>
>>>>>>>>> In most cases following works better:
>>>>>>>>>
>>>>>>>>> cursor.execute('UPDATE EMP SET NAME=:arg1', {'arg1' : None })
>>>>>>>>>
>>>>>>>>> When you do it that way Python DB-API takes care of correct
>>>>>>>>> quotation
>>>>>>>>> and makes sure that there is no way to inject malicious data and
>>>>>>>>> in most
>>>>>>>>> cases correct datatype conversion takes a place (there is few
>>>>>>>>> occassions
>>>>>>>>> when this fails)
>>>>>>>>>
>>>>>>>>> cx_Oracle doesn't support %s format, it supports only :name (named)
>>>>>>>>> format [1].
>>>>>>>>>
>>>>>>>>> [1] http://www.python.org/dev/peps/pep-0249/#paramstyle
>>>>>>>>> --
>>>>>>>>> Jani Tiainen
>>>>>>>>>
>>>>>>>>> - Well planned is half done and a half done has been sufficient
>>>>>>>>> before...
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> ------------------------------------------------------------------------------
>>>>>>>>> Own the Future-Intel(R) Level Up Game Demo Contest 2013
>>>>>>>>> Rise to greatness in Intel's independent game demo contest. Compete
>>>>>>>>> for recognition, cash, and the chance to get your game on Steam.
>>>>>>>>> $5K grand prize plus 10 genre and skill prizes. Submit your demo
>>>>>>>>> by 6/6/13. http://altfarm.mediaplex.com/ad/ck/12124-176961-30367-2
>>>>>>>>> _______________________________________________
>>>>>>>>> cx-oracle-users mailing list
>>>>>>>>> cx-oracle-users-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org
>>>>>>>>> https://lists.sourceforge.net/lists/listinfo/cx-oracle-users
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>  ------------------------------
>>>>>>>>> Confidentiality Note: This electronic message transmission is
>>>>>>>>> intended only for the person or entity to which it is addressed and may
>>>>>>>>> contain information that is privileged, confidential or otherwise protected
>>>>>>>>> from disclosure. If you have received this transmission, but are not the
>>>>>>>>> intended recipient, you are hereby notified that any disclosure, copying,
>>>>>>>>> distribution or use of the contents of this information is strictly
>>>>>>>>> prohibited. If you have received this e-mail in error, please contact
>>>>>>>>> Continuum Performance Systems at {203.245.5000} and delete and
>>>>>>>>> destroy the original message and all copies.
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> ------------------------------------------------------------------------------
>>>>>>>>> Minimize network downtime and maximize team effectiveness.
>>>>>>>>> Reduce network management and security costs.Learn how to hire
>>>>>>>>> the most talented Cisco Certified professionals. Visit the
>>>>>>>>> Employer Resources Portal
>>>>>>>>> http://www.cisco.com/web/learning/employer_resources/index.html
>>>>>>>>>
>>>>>>>>> _______________________________________________
>>>>>>>>> cx-oracle-users mailing list
>>>>>>>>> cx-oracle-users-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org
>>>>>>>>> https://lists.sourceforge.net/lists/listinfo/cx-oracle-users
>>>>>>>>>
>>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> ------------------------------------------------------------------------------
>>>>>>>> Minimize network downtime and maximize team effectiveness.
>>>>>>>> Reduce network management and security costs.Learn how to hire
>>>>>>>> the most talented Cisco Certified professionals. Visit the
>>>>>>>> Employer Resources Portal
>>>>>>>> http://www.cisco.com/web/learning/employer_resources/index.html
>>>>>>>> _______________________________________________
>>>>>>>> cx-oracle-users mailing list
>>>>>>>> cx-oracle-users-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org
>>>>>>>> https://lists.sourceforge.net/lists/listinfo/cx-oracle-users
>>>>>>>>
>>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> --
>>>>>>> Amaury Forgeot d'Arc
>>>>>>>
>>>>>>>
>>>>>>> ------------------------------------------------------------------------------
>>>>>>> Minimize network downtime and maximize team effectiveness.
>>>>>>> Reduce network management and security costs.Learn how to hire
>>>>>>> the most talented Cisco Certified professionals. Visit the
>>>>>>> Employer Resources Portal
>>>>>>> http://www.cisco.com/web/learning/employer_resources/index.html
>>>>>>> _______________________________________________
>>>>>>> cx-oracle-users mailing list
>>>>>>> cx-oracle-users-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org
>>>>>>> https://lists.sourceforge.net/lists/listinfo/cx-oracle-users
>>>>>>>
>>>>>>>
>>>>>>
>>>>>
>>>>>
>>>>> --
>>>>> Amaury Forgeot d'Arc
>>>>>
>>>>
>>>>
>>>
>>>
>>> ------------------------------------------------------------------------------
>>> Minimize network downtime and maximize team effectiveness.
>>> Reduce network management and security costs.Learn how to hire
>>> the most talented Cisco Certified professionals. Visit the
>>> Employer Resources Portal
>>> http://www.cisco.com/web/learning/employer_resources/index.html
>>> _______________________________________________
>>> cx-oracle-users mailing list
>>> cx-oracle-users-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org
>>> https://lists.sourceforge.net/lists/listinfo/cx-oracle-users
>>>
>>>
>>
>>
>> ------------------------------------------------------------------------------
>> Minimize network downtime and maximize team effectiveness.
>> Reduce network management and security costs.Learn how to hire
>> the most talented Cisco Certified professionals. Visit the
>> Employer Resources Portal
>> http://www.cisco.com/web/learning/employer_resources/index.html
>> _______________________________________________
>> cx-oracle-users mailing list
>> cx-oracle-users-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org
>> https://lists.sourceforge.net/lists/listinfo/cx-oracle-users
>>
>>
>

------------------------------------------------------------------------------
Minimize network downtime and maximize team effectiveness.
Reduce network management and security costs.Learn how to hire 
the most talented Cisco Certified professionals. Visit the 
Employer Resources Portal
http://www.cisco.com/web/learning/employer_resources/index.html

_______________________________________________
cx-oracle-users mailing list
cx-oracle-users-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org
https://lists.sourceforge.net/lists/listinfo/cx-oracle-users
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.