Hi!

I use postgresql and I try create my exception DuplicateKeyError 
inheritanced from IntegrityError.

I know that duplicate key in postgresql has code 23505 and I must catch with
if err.orig.pgcode == '23505':
    ...

How I can create this?

I don't work with many exceptions, and don't find what method it execute 
when it raised.

I try:

from sqlalchemy.exc import IntegrityError


class DuplicateKeyError(IntegrityError):
    def __init__(self, *args, **kwargs):
        print '______________DuplicateKeyError init called'
        print '____ args:',args
        print '____ kwargs:',kwargs
        super(DuplicateKeyError, self).__init__(*args, **kwargs)

    @classmethod
    def instance(cls, *args, **kwargs):
        print '______________DuplicateKeyError instance called'
        print '____ cls:',cls
        print '____ args:',args
        print '____ kwargs:',kwargs
        super(DuplicateKeyError, cls).instance(*args, **kwargs)

    @staticmethod
    def __new__(cls, *args, **kwargs):
        print '______________DuplicateKeyError new called'
        print '____ cls:',cls
        print '____ args:',args
        print '____ kwargs:',kwargs
        super(DuplicateKeyError, cls).__new__(*args, **kwargs)

    def __call__(self, *args, **kwargs):
        print '______________DuplicateKeyError call called'
        print '____ self:',self
        print '____ args:',args
        print '____ kwargs:',kwargs
        super(DuplicateKeyError, self).__call__(*args, **kwargs)

def test():
    try:
        i = Interest(name='x1')
        db.session.add(i)
        db.session.commit()
    except DuplicateKeyError as err:
        print '===== err:',err
        print '===== err.orig.pgcode:',err.orig.pgcode


but nothing of my prints does not executed.

Where I wrong?

Thanks!

-- 
You received this message because you are subscribed to the Google Groups 
"sqlalchemy" group.
To view this discussion on the web visit 
https://groups.google.com/d/msg/sqlalchemy/-/ExQsD7uUi6MJ.
To post to this group, send email to sqlalchemy@googlegroups.com.
To unsubscribe from this group, send email to 
sqlalchemy+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/sqlalchemy?hl=en.

Reply via email to