[python-sybase] Can't set_property()

skip at pobox.com skip at pobox.com
Fri Sep 23 02:56:44 EST 2005


    skip> What am I doing wrong here?

    ...
    >>>> conn.set_property(Sybase.CS_APPNAME, "foo")
    ...
    skip>     ct_con_props(SET,APPNAME): user api layer: external error: This property
    skip>     cannot be set after a connection to a server has been established.

Looking at the Open Client docs on the Sybase site it says that CS_APPNAME
and CS_HOSTNAME are login properties that take effect "only if set before
the connection is established".  I eventually figured out that a change was
needed to Sybase.Connection.__init__.  here's a udiff against 0.37:

--- Sybase.py.~1~       2005-04-06 17:46:43.000000000 -0500
+++ Sybase.py   2005-09-22 11:49:58.849060000 -0500
@@ -836,7 +836,8 @@
 class Connection:

     def __init__(self, dsn, user, passwd, database = None,
-                 strip = 0, auto_commit = 0, delay_connect = 0, locking = 1):
+                 strip = 0, auto_commit = 0, delay_connect = 0, locking = 1,
+                 appname = "", hostname = ""):
         '''DB-API Sybase.Connect()
         '''
         self._conn = self._cmd = None
@@ -863,6 +864,14 @@
         status = conn.ct_con_props(CS_SET, CS_PASSWORD, passwd)
         if status != CS_SUCCEED:
             self._raise_error(Error, 'ct_con_props')
+        if appname:
+            status = conn.ct_con_props(CS_SET, CS_APPNAME, appname)
+            if status != CS_SUCCEED:
+                self._raise_error(Error, 'ct_con_props')
+        if hostname:
+            status = conn.ct_con_props(CS_SET, CS_HOSTNAME, hostname)
+            if status != CS_SUCCEED:
+                self._raise_error(Error, 'ct_con_props')
         if not delay_connect:
             self.connect()

-- 
Skip Montanaro
Katrina Benefit Concerts: http://www.musi-cal.com/katrina
skip at pobox.com


More information about the Python-sybase mailing list