Re: Error in ct_options

Marcos Sánchez Provencio <[email protected]>
Newsgroups gmane.comp.python.sybase
Message-ID <1043407967.1603.13.camel@cynar>
First, thank you for the module in general and for the fast answer in
particular.

I suppose you meant 
-            if status != CS_SUCCEED:
-                self._raise_error(Error, 'ct_options')
+           self.auto_commit = (status != CS_SUCCEED)
                                         ^^^^^^

Well, now it connects alright, but I don't get auto-commit off, do I? I
do want standard dbapi behavior.

Would it be ok to just execute 
c.execute('set implicit_transactions on') on the connection?


El vie, 24-01-2003 a las 02:16, Dave Cole escribió: 
> > I am getting Sybase.Error: ct_options when connecting to MSSQL or
> > Sybase. If I comment out the CS_OPT_CHAINXACTS line, it seems to
> > work for simple selects. tsql from freetds, today's version works
> > fine, so I suppose my freetds.conf file is right. What is the next
> > place to look?
> 
> The CS_OPT_CHAINXACTS option is there to conform to the DB-API
> specification
> 
>         http://www.python.org/topics/database/DatabaseAPI-2.0.html
> 
>     Connection Objects
>       commit()
> 
>       Commit any pending transaction to the database. Note that if the
>       database supports an auto-commit feature, this must be initially
>       off. An interface method may be provided to turn it back on.
> 
>       Database modules that do not support transactions should
>       implement this method with void functionality.
> 
> I probably should silently ignore problems setting this option...
> 
> > I get the following when connecting to MSSQL2000:
> > 
> > marcos@cynar:~/sybase-0.36pre3$ python -c "import
> > Sybase;Sybase._ctx.debug = 1;Sybase.connect('cazalla','sa','xxx')"
> > ct_con_alloc(ctx0, &conn) -> CS_SUCCEED, conn0
> > ct_con_props(conn0, CS_SET, CS_USERNAME, "sa", CS_NULLTERM, NULL) ->
> > CS_SUCCEED
> > ct_con_props(conn0, CS_SET, CS_PASSWORD, "xxx", CS_NULLTERM, NULL) ->
> > CS_SUCCEED
> > servermsg_cb
> > servermsg_cb
> > ct_connect(conn0, "cazalla", CS_NULLTERM) -> CS_SUCCEED
> > ct_options(conn0, CS_SET, CS_OPT_CHAINXACTS, 1, CS_UNUSED, NULL) ->
> > CS_FAIL
> > ct_cancel(conn0, NULL, CS_CANCEL_ALL) -> CS_SUCCEED
> > Traceback (most recent call last):
> >   File "<string>", line 1, in ?
> >   File "Sybase.py", line 768, in connect
> >     strip, auto_commit, delay_connect, locking)
> >   File "Sybase.py", line 608, in __init__
> >     self.connect()
> >   File "Sybase.py", line 633, in connect
> >     self._raise_error(Error, 'ct_options')
> >   File "Sybase.py", line 621, in _raise_error
> >     raise exc(text)
> > Sybase.Error: ct_options
> > ct_con_props(conn0, CS_GET, CS_CON_STATUS, &value, CS_UNUSED, NULL) ->
> > CS_SUCCEED, CS_CONSTAT_CONNECTED
> > ct_close(conn0, CS_OPT_STATS_IO) -> CS_SUCCEED
> > ct_con_drop(conn0) -> CS_SUCCEED
> 
> Can you try this patch (to 0.36pre3) for me (contains changes for
> Valerie R. Coffman as well)?
> 
> - Dave
> 
> -- Sybase.py	23 Jan 2003 10:11:02 -0000	1.56
> +++ Sybase.py	24 Jan 2003 01:13:55 -0000
> 
> @@ -158,6 +158,8 @@
>          fmt.count = count
>          if fmt.datatype == CS_VARBINARY_TYPE:
>              fmt.datatype = CS_BINARY_TYPE
> +        if fmt.maxlngth > 65536:
> +            fmx.maxlength = 65536
>          status, buf = cmd.ct_bind(i + 1, fmt)
>          if status != CS_SUCCEED:
>              raise Error('ct_bind')
> @@ -629,8 +631,7 @@
>                  self._raise_error(Error, 'ct_connect')
>              self._is_connected = 1
>              status = conn.ct_options(CS_SET, CS_OPT_CHAINXACTS, not self.auto_commit)
> -            if status != CS_SUCCEED:
> -                self._raise_error(Error, 'ct_options')
> +	    self.auto_commit = (status != SUCCEED)
>          finally:
>              self._unlock()
>          if self.database:


-- 

Marcos Sánchez Provencio <[email protected]>
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.