Michael Bayer wrote: > > On Feb 10, 2006, at 4:07 PM, Alan Franzoni wrote: > >> while I've just begun using SQLAlchemy, I already love it ^_^. >> > glad to hear it ! > >> It's just missing one feature I'd really see in it, since it's an >> evergreen: consistent error handling. I can't find a tracker for this >> piece >> of software, so I don't know if it's already in the want list for 1.0. >> > > tracker is right via trac: http://www.sqlalchemy.org/trac/newticket > log in as guest/guest > >> >> TypeMismatchError - type mismatch >> NotNullError - if trying to insert None in a NOT NULL column >> ForeignKeyError - if trying to insert a non-existent FK ID >> IntegrityError - trying to remove a referenced row >> UniqueError - if violating an Unique constraint. >> CheckError - generic check violation >> ConstraintError - generic constraint violation >> > > assuming you are talking about anticipating errors before they happen, > it seems like this might be some kind of constraint-checker that takes > in database metadata and validates potential input statements against > it. that might be a useful product but I would consider that to be a > separate piece of software...it amounts to writing about half of an > RDBMS in Python...maybe one of the existing pure-python databases could > provide a starting point. SQLAlchemy is getting "Index" objects in > the schema soon, so maybe such a product can build upon it...but this > is way out of the scope of SA itself (for example....should it scan a > table for the existence of corresponding foreign keys before inserting > a new row ? thats a lot of processing to do, especially in an external > process - and its what the DB is meant to be doing). > > if you are just looking for a "lookup table" that matches DB errors to > a common repository of strings, that wont get you very far re: user > validation since the context and content of error messages varies > widely, only a fraction of error messages would even have a common > home; in the case of mysql and sqlite which have little or no > constraint checking, you wont get an error message, just a corrupted > database. User-input should be validated way before it gets near a > persistence layer. > >> We should also think something about the accessible data of the >> exception >> instance, i.e. it should contain useful info to tell the user what's >> going >> on and help him track down the problem. > > > I can only do as well as the DBAPI lets me know ! passing the > exception straight out is the best i can do with that. It might be > nice to have them "wrapped" in a common exception class but I find that > Python stack traces behave a lot nicer when they are left untouched. > > - mike > >
I find it convenient to alias any db-specific exceptions I might want to catch, right after I set up the engine: IntegrityError = engine.module.IntegrityError ... but I agree about not wrapping exceptions in general. -- Wade ------------------------------------------------------- This SF.net email is sponsored by: Splunk Inc. Do you grep through log files for problems? Stop! Download the new AJAX search engine that makes searching your log files as easy as surfing the web. DOWNLOAD SPLUNK! http://sel.as-us.falkag.net/sel?cmd=lnk&kid=103432&bid=230486&dat=121642 _______________________________________________ Sqlalchemy-users mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/sqlalchemy-users

