[DB-SIG] How to use Prepared Statment? Facing Error

Andy Todd andy47 at halfcooked.com
Fri Feb 3 11:26:00 CET 2006


python eager wrote:
> hi, i am using the same method what you suggest. While running the 
> program i am getting the following error
>  
> AttributeError: db_connection instance has no attribute 'paramstyle'
>  
> Please rectify the error
>  
> thank you
> Python Eager
> 
> */Andy Todd <andy47 at halfcooked.com>/* wrote:
> 
>     python eager wrote:
>      > Hi this my code snippet. This code will not execute. And also
>     this code
>      > raise error.
>      >
>      > DatabaseError: ORA-01036: illegal variable name/number
>      >
>      > What is the problem. Please give me a solution. Is there any
>     problem is
>      > sql statment please give the correct statment, i will apply that
>     statment.
>      >
>      >
>      > _Code Snippet :_
>      > __
>      > *def view_one(self,pid):
>      > *sql_pStmt = "SELECT FIRSTNAME,LASTNAME FROM PERSONALDETAILS
>      > WHERE PID = ?"
>      > cursor.execute(sql_pStmt,pid)
>      >
>      > Thank you
>      >
>      > regards
>      > Python Eager
>      >
> 
>      From the cx_Oracle documentation (section 3) [1];
> 
>     """
>     execute(statement, [parameters], **keywordParameters)
>     Execute a statement against the database. Parameters may be passed as
>     a dictionary or sequence or as keyword arguments. If the arguments
>     are a
>     dictionary, the values will be bound by name and if the arguments are a
>     sequence the values will be bound by position."
>     """
> 
>      From the DB-API specification [2];
> 
>     """
>     paramstyle
> 
>     String constant stating the type of parameter marker
>     formatting expected by the interface. Possible values are
>     [2]:
> 
>     'qmark' Question mark style,
>     e.g. '...WHERE name=?'
>     'numeric' Numeric, positional style,
>     e.g. '...WHERE name=:1'
>     'named' Named style,
>     e.g. '...WHERE name=:name'
>     'format' ANSI C printf format codes,
>     e.g. '...WHERE name=%s'
>     'pyformat' Python extended format codes,
>     e.g. '...WHERE name=%(name)s'
>     """
> 
>     cx_Oracle uses the 'named' parameter style, your code uses the qmark
>     style. To find out which style is applicable check the paramstyle
>     attribute of your connection object. e.g.;
> 
>      >>> import cx_Oracle
>      >>> myConnection = cx_Oracle.connect('andy47/andy47 at andy47')
>      >>> myConnection.paramstyle
>     'named'
> 
>     [1]
>     http://starship.python.net/crew/atuining/cx_Oracle/html/cursorobj.html
>     [2] http://www.python.org/peps/pep-0249.html
> 
>     Regards,
>     Andy
>     -- 
>     --------------------------------------------------------------------------------
>      From the desk of Andrew J Todd esq - http://www.halfcooked.com/
> 

That's my mistake for not reading the documentation and just typing some 
sample code into my email rather than actually firing up a Python 
interpreter. Let that be a lesson to us all.

 >>> import cx_Oracle
 >>> cx_Oracle.paramstyle
'named'

Regards,
Andy
-- 
--------------------------------------------------------------------------------
 From the desk of Andrew J Todd esq - http://www.halfcooked.com/


More information about the DB-SIG mailing list