Adding that import statement at the top of my controller did it!

The IntegrityError: is now being explicitly caught, and when I
purposely threw in a "division by 0" assignment in, your ticketing
sytem then caught that as a DivisionByZero: error.

Kewl!

Thanks again!

Todd B.


On Jan 29, 8:23 pm, mdipierro <mdipie...@cs.depaul.edu> wrote:
> probably you need
>
> from pyodbc import IntegrityError
>
> do not import it from psycopg since that is a different exception than
> the one thrown by mssql
>
> Massimo
>
> On Jan 29, 2:38 pm, NetHead <tbnethe...@yahoo.com> wrote:
>
>
>
> > Hello Massimo!
>
> > Thank you for your reply.
>
> > To clarify....
>
> > SQL Server is properly detecting a duplicate value when it is
> > entered.  It's Web2py's behavior when this
> > error is detected that I'm trying to change.
>
> > If you look at my original post again, I'm getting the error
> > "NameError: global name 'IntegrityError' is not defined" when
> > Web2py hits the exception code in my "try:" block.    In my exception
> > block I'm explicitly trying to catch
> > the integrity error by stating:  "except IntegrityError:"
>
> > If I simply remove the string 'IntegrityError' from that line of code,
> > the flash message works.  But.... I don't want to display my custom
> > error on all detected SQL Server errors... just the "integrity"
> > related ones.   I want your ticket system to take over flagging other
> > SQL errors if they occur.
>
> > Does that help clarify things a bit more?
>
> > I did notice that someone using Django 
> > (see:http://groups.google.com/group/django-users/msg/33b8f9b46ff76f05) had
> > a similar problem in one of their code blocks, and the reply was:
>
> >     First, you're getting "global name 'IntegrityError' is not
> > defined"
> >     because IntegrityError isn't in the local namespace when you're
> >     catching it. You'll need to import it -- probably from psycopg:
>
> >     Ex:   from psycopg import IntegrityError
>
> > Is there a similar import needed by Web2py from PYODBC, to allow
> > explicit checking for the 'IntegrityError'?
>
> > Grazie!
>
> > Todd B.
>
> > On Jan 29, 2:11 pm, mdipierro <mdipie...@cs.depaul.edu> wrote:
>
> > > According to this:http://code.google.com/p/pyodbc/wiki/Errors
> > > it should not do so.
>
> > > Can you provide an example of an error that raises IntegrityError but
> > > should not?
>
> > > Massimo
>
> > > On Jan 29, 10:23 am, NetHead <tbnethe...@yahoo.com> wrote:
>
> > > > Greetings everyone!
>
> > > > This is my first post on this forum.   My appreciation (in advance)
> > > > for any help any of you can lend me.
>
> > > > SYNOPSIS:  My app uses Web2py along with MS Sql Server.   I placed a
> > > > unique constraint on a column in my SQL table, and if a user attempts
> > > > to enter a duplicate value in this column (and thus firing the SQL
> > > > UNIQUE constraint error), I want Web2py to gracefully flash a custom
> > > > error to the user.
>
> > > > If MS SQL throws any other kind of non integrity-related errors, then
> > > > I would still like the Web2py ticket system to kick in and provide the
> > > > more informative message to the user.
>
> > > > Here's the code I tried:
>
> > > >     try:
> > > >         if items_form.accepts(request.vars,session,keepvalues=True) :
> > > >             response.flash='Record was saved'
> > > >         elif items_form.errors:
> > > >             response.flash='Form has errors'
> > > >     except IntegrityError:
> > > >             response.flash='Possible Duplicate Item ID - Please try
> > > > again!'
>
> > > > Which then generated this error ticket info:
>
> > > > Traceback (most recent call last):
> > > >   File "E:\Python\web2py_src\web2py\gluon\restricted.py", line 62, in
> > > > restricted
> > > >     exec ccode in environment
> > > >   File "E:\Python\web2py_src\web2py\applications\BossWalk/controllers/
> > > > items.py", line 282, in <module>
> > > >   File "E:\Python\web2py_src\web2py\gluon\globals.py", line 55, in
> > > > <lambda>
> > > >     self._caller=lambda f: f()
> > > >   File "E:\Python\web2py_src\web2py\applications\BossWalk/controllers/
> > > > items.py", line 269, in items_upsert
> > > >     except IntegrityError:
> > > > NameError: global name 'IntegrityError' is not defined
>
> > > > NOTE: If I take the 'IntegrityError' string out  of the 'Except' line,
> > > > the process does use 'flash' to show the custom error message when the
> > > > MS SQL unique constraint is violated.
>
> > > > But..... I'm surmising that it will also show that *same* message if
> > > > ANY type of MS SQL exception gets thrown... not just the unique
> > > > constraint / integrity error.
>
> > > > To summarize:   I would like to flash the custom error when an SQL
> > > > integrity error is thrown, and fall back on the ticketing system if MS
> > > > SQL throws any other kind of error.
>
> > > > Is this possible?
>
> > > > Thanks!!!
>
> > > > Todd B.- Hide quoted text -
>
> > > - Show quoted text -- Hide quoted text -
>
> - Show quoted text -
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"web2py Web Framework" group.
To post to this group, send email to web2py@googlegroups.com
To unsubscribe from this group, send email to 
web2py+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/web2py?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to