Re: [cx-oracle-users] Named Parameters Issue - ORA-01460: unimplemented or unreasonable conversion
Brought to you by:
atuining
From: Anurag C. <anu...@gm...> - 2013-04-03 21:15:37
|
Thanks, I will try with the 64 Bit version instead of 32 Bit Version and report back the results. Regards, Anurag On Wed, Apr 3, 2013 at 5:11 PM, Joel Slowik <js...@cp...> wrote: > As I understand it, whatever version of cx_oracle you have should have > been compiled for whatever version of oracle you are using. I just tested a > variant of your code that “does not work” on my system and it returned a > value. Short of you using an incompatible version there are a few other > reasons why you would get ORA-01460 but I would start there. > > > > *From:* Anurag Chourasia [mailto:anu...@gm...] > *Sent:* Wednesday, April 03, 2013 4:56 PM > *To:* cx-...@li...; Joel Slowik > *Subject:* Re: [cx-oracle-users] Named Parameters Issue - ORA-01460: > unimplemented or unreasonable conversion requested > > > > 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}) > > Regards, > > Anurag > > On Wed, Apr 3, 2013 at 4:50 PM, Joel Slowik <js...@cp...> wrote: > > 64-bit server but using 32-bit cx_oracle? > > > > *From:* Anurag Chourasia [mailto:anu...@gm...] > *Sent:* Wednesday, April 03, 2013 4:46 PM > *To:* cx-...@li...; re...@gm... > *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 < > anu...@gm...> wrote: > > Thanks Jani...With that my issue is solved. > > > > Regards > > Guddu > > > > On Tue, Apr 2, 2013 at 1:35 AM, Jani Tiainen <re...@gm...> 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-...@li... > 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-...@li... > 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. > |