On Feb 1, 10:53 am, Michael Pedersen <[email protected]> wrote:
> Unfortunately, I don't know any database that enforces integrity
> constraints and will do what you want to do. Standard DB designs say
> "Make a transaction, insert data, and roll back if an error occurs".
> Short of doing a commit after every write or preventing any attempt to
> write data that violates those integrity constraints, I don't have an
> option for you. I'm sorry.
That was the solution.
After each loop there has to be a
try:
DBSession.flush()
except exc.IntegrityError:
DBSession.rollback()
Thanks,
Lucas
>
>
>
> On Mon, Jan 31, 2011 at 7:35 PM, Lukasz Szybalski <[email protected]> wrote:
> > Hello,
> > I've inserted record into database, then record got changed in the database.
>
> > Now I have more record to insert, some that I've already imported and
> > will give me "Unique key error" aka IntegrityError. In sql I was able
> > to tell to dissregard these errors and continue to next record.
>
> > In TG2 I have created a load.py file that has:
>
> > from ubs.model import *
>
> > conf_dict = appconfig('config:%s' % os.path.join(os.getcwd(),
> > '../../development.ini'))
> > engine = create_engine(conf_dict['sqlalchemy.url'])
> > engine.echo=False
> > init_model(engine)
> > #end of tg2 session
>
> > from ubs.model import DBSession, metadata
> > from ubs.model.policy import Policy, Installment
> > import transaction
>
> > #some manipulation
>
> > transaction.commit
>
> > But the transaction Will not allow me to skip the "duplicate key" ?
> > How can I do that?
>
> > One option is to change from autocommit = False to True and catch the
> > exceptions but then I would need to redo the whole sessionmake from
> > tg2 model/__init__.py ????
>
> > Is there a way I can tell transaction.commit to "warn me about the
> > integrity errors, but allow the rest of the transactions that are good
> > to go through and commit?"
>
> > Thanks,
> > Lucas
>
> > try excpt Integrity error by doing DBSession.flush does not work:
> > sqlalchemy.exc.InvalidRequestError: This Session's transaction has
> > been rolled back due to a previous exception during flush. To begin a
> > new transaction with this Session, first issue Session.rollback().
> > Original exception was: (IntegrityError) columns...........
>
> > --
> > You received this message because you are subscribed to the Google Groups
> > "TurboGears" group.
> > To post to this group, send email to [email protected].
> > To unsubscribe from this group, send email to
> > [email protected].
> > For more options, visit this group
> > athttp://groups.google.com/group/turbogears?hl=en.
>
> --
> Michael J. Pedersen
> My IM IDs: Jabber/[email protected], ICQ/103345809, AIM/pedermj022171
> Yahoo/pedermj2002, MSN/[email protected]
--
You received this message because you are subscribed to the Google Groups
"TurboGears" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to
[email protected].
For more options, visit this group at
http://groups.google.com/group/turbogears?hl=en.