[python-sybase] how to get return value of update/delete

mike mik3l3374 at gmail.com
Thu Oct 27 11:43:21 EST 2005


thanks for the help, appreciate that.
my version of Sybase ASE is 12.5
and when i did the compiling in Solaris 8, i use gcc and just "python
setup.py install" and no
other flags or options. Don't know whether it has anything to do with that
rowcount stuff , maybe my environment has something to do with it but
anyway, just some info on my side on what i did....
 I will try out the Sybase.py you posted. Will keep you informed.

 On 10/26/05, Nidositko, James <James.Nidositko at gs.com> wrote:
>
>  Mike,
> I had some discussions earlier this year with Dave about fixing the
> rowcount stuff in the recent versions of the Sybase module (0.36 and 0.37).
> I was under the impression that these fixes had been incorporated and
> released, but I did not check that before responding to your question. Sorry
> for the confusion.
>  The last official version that I know of where rowcount() worked was
> 0.36-pre2. There were extensive changes to the structure of the code
> between that version and the actual 0.36 release. The rowcount problems
> were introduced by some of those changes and carried forward into 0.37.
>  I'm assuming that you're using 0.37.
>  The attached copy of Sybase.py fixes the rowcount issues. It is based on
> the version released with 0.37.
>  Dave, any chance of getting an official release with rowcount() working?
>  -Jim
>
>  ------------------------------
> *From:* mike [mailto:mik3l3374 at gmail.com]
> *Sent:* Wednesday, October 26, 2005 10:56 AM
> *To:* Nidositko, James
> *Cc:* python-sybase at www.object-craft.com.au
> *Subject:* Re: [python-sybase] how to get return value of update/delete
>
>  hi thanks for the reply.
> I went to try the codes out
>
> def exec_updtstmt(Svr,Login,Pass,Db,SQL):
> ''' Connects to database specified, exec the SQL and returns value'''
> try:
> db = Sybase.connect(Svr, Login,Pass ,Db)
> c = db.cursor()
> try:
> c.execute(SQL)
> print "Cursor rowcount after update (no rows) is: %d" % c.rowcount
> db.commit()
> db.close()
> except Sybase.DatabaseError:
> return 9
> except:
> return 2
>
> stmt = '''
> update table
> set col_1 = 1
> where login = "user"
> '''
>
> exec_updtstmt(Svr,Login,Pass,DbInt,stmt)
>
> what i got is "Cursor rowcount after update (no rows) is: -1" and when i
> checked the table
> it is updated. Although the update works, i would wish to get that return
> to indicate to the user whether success or failure
> .
> thanks for any further help
>
>
>
>
> On 10/26/05, Nidositko, James <James.Nidositko at gs.com> wrote:
> >
> >
> > Mike,
> > There is no inherent concept of a "return value" from an executed SQL
> > statement. You can produce such a result by encapsulating your SQL
> > statements within stored procedures by detecting the rowcount and
> > setting
> > the return value in response, but there isn't really any need for you to
> > do
> > that.
> >
> > 1) It sounds like the error case that you're trying to describe below
> > should
> > be detected by getting a rowcount of zero from the update.
> >
> > 2) Rowcount does work. Here is some sample code that will show rowcount
> > working in various situations.
> >
> > c=dbc.cursor()
> > print "Cursor rowcount is initialized to: %d" % c.rowcount
> > c.execute ("create table __test_rowcount (col1 varchar(10) NULL)")
> > print "Cursor rowcount after create table is: %d" % c.rowcount
> >
> > c.execute("insert __test_rowcount (col1) values ('asdf')")
> > print "Cursor rowcount after insert 1 is: %d" % c.rowcount
> >
> > c.execute("insert __test_rowcount (col1) values ('asdf')")
> > print "Cursor rowcount after insert 2 is: %d" % c.rowcount
> >
> > c.execute("update __test_rowcount set col1 = 'qwer' where col1 =
> > 'asdf'")
> > print "Cursor rowcount after update is: %d" % c.rowcount
> >
> > c.execute("update __test_rowcount set col1 = 'qwer' where col1 = 'not
> > there'")
> > print "Cursor rowcount after update (no rows) is: %d" % c.rowcount
> >
> > c.execute("select count(*) from __test_rowcount")
> > print "Cursor rowcount after execute for select is: %d" % c.rowcount
> > c.fetchall()
> > print "Cursor rowcount after fetch for select is: %d" % c.rowcount
> >
> > c.execute("delete __test_rowcount where col1 = 'qwer'")
> > print "Cursor rowcount after delete is: %d" % c.rowcount
> >
> > The only unusual case is select. Then, the rowcount is not set until the
> > fetch is performed.
> >
> > -Jim
> >
> > -----Original Message-----
> > From: python-sybase-bounces at www.object-craft.com.au
> > [mailto:python-sybase-bounces at www.object-craft.com.au] On Behalf Of
> > python-sybase-request at www.object-craft.com.au
> > Sent: Tuesday, October 25, 2005 10:00 PM
> > To: python-sybase at www.object-craft.com.au
> > Subject: Python-sybase Digest, Vol 5, Issue 3
> >
> >
> > Today's Topics:
> >
> > 1. how to get return value of update/delete statement (michael lee)
> >
> >
> > ----------------------------------------------------------------------
> >
> > Message: 1
> > Date: Tue, 25 Oct 2005 18:30:07 +0800
> > From: michael lee <mik3l3374 at gmail.com>
> > Subject: [python-sybase] how to get return value of update/delete
> > statement
> > To: Python Sybase < python-sybase at www.object-craft.com.au>
> > Message-ID:
> > <e3202a160510250330t7306ecd6p79b4517d42e5bc2c at mail.gmail.com>
> > Content-Type: text/plain; charset="iso-8859-1"
> >
> > hi
> > how can i successfully get the return of an update or delete statement
> > using
> > the Sybase module?
> > i am doing a CGI script whereby if a user keys in the wrong name, i
> > would
> > want to catch that error eg if key in wrong username, my CGI script will
> > call Sybase to execute < update table set this = a-value where name =
> > 'wronguser' > and then return a value indicating "not found"
> > but i am not able to figure out how to catch this return value. Any
> > advise?
> > ....
> > cur.execute(update_statement)
> > ....
> > my table is being updated though when i tried a valid user. I tried
> > rowcount but also not working.
> > thanks
> > -------------- next part --------------
> > An HTML attachment was scrubbed...
> > URL:
> > http://www.object-craft.com.au/pipermail/python-sybase/attachments/20051025/
> >
> > 0c35109c/attachment-0001.html
> >
> > ------------------------------
> >
> > _______________________________________________
> > Python-sybase mailing list
> > Python-sybase at www.object-craft.com.au
> > https://www.object-craft.com.au/cgi-bin/mailman/listinfo/python-sybase
> >
> >
> > End of Python-sybase Digest, Vol 5, Issue 3
> > *******************************************
> >
>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://www.object-craft.com.au/pipermail/python-sybase/attachments/20051027/847ca1fa/attachment.html


More information about the Python-sybase mailing list