That's probably our fault, what is the exact version of SQLAlchemy in use
?  Did you try upgrading to the latest release ?

On Nov 7, 2017 4:32 AM, "Hugo Heyman" <[email protected]> wrote:

> Hello,
>
>
> I get an error I don't really understand. When I do session commit after a
> deletion like this:
>
> App: app.bootstrap_new [debug]
> Instance: /Users/hugo/Dropbox/lahey/api/instance
> >>> from app.extensions import db
> >>> from app.models.user import User
> >>> user = User.query.all()[0]
> >>> db.session.delete(user)
> >>> db.session.commit()
>  (this is in a shell with flask app context but I get the same error when
> trying to delete in app that is being served)
>
>
>> Traceback (most recent call last):
>>   File "<console>", line 1, in <module>
>>   File "/Users/hugo/Dropbox/lahey/api/.venv/lib/python3.6/site-
>> packages/sqlalchemy/orm/scoping.py", line 153, in do
>>     return getattr(self.registry(), name)(*args, **kwargs)
>>   File "/Users/hugo/Dropbox/lahey/api/.venv/lib/python3.6/site-
>> packages/sqlalchemy/orm/session.py", line 937, in commit
>>     self.transaction.commit()
>>   File "/Users/hugo/Dropbox/lahey/api/.venv/lib/python3.6/site-
>> packages/sqlalchemy/orm/session.py", line 461, in commit
>>     self._prepare_impl()
>>   File "/Users/hugo/Dropbox/lahey/api/.venv/lib/python3.6/site-
>> packages/sqlalchemy/orm/session.py", line 441, in _prepare_impl
>>     self.session.flush()
>>   File "/Users/hugo/Dropbox/lahey/api/.venv/lib/python3.6/site-
>> packages/sqlalchemy/orm/session.py", line 2237, in flush
>>     self._flush(objects)
>>   File "/Users/hugo/Dropbox/lahey/api/.venv/lib/python3.6/site-
>> packages/sqlalchemy/orm/session.py", line 2363, in _flush
>>     transaction.rollback(_capture_exception=True)
>>   File "/Users/hugo/Dropbox/lahey/api/.venv/lib/python3.6/site-
>> packages/sqlalchemy/util/langhelpers.py", line 66, in __exit__
>>     compat.reraise(exc_type, exc_value, exc_tb)
>>   File "/Users/hugo/Dropbox/lahey/api/.venv/lib/python3.6/site-
>> packages/sqlalchemy/util/compat.py", line 187, in reraise
>>     raise value
>>   File "/Users/hugo/Dropbox/lahey/api/.venv/lib/python3.6/site-
>> packages/sqlalchemy/orm/session.py", line 2327, in _flush
>>     flush_context.execute()
>>   File "/Users/hugo/Dropbox/lahey/api/.venv/lib/python3.6/site-
>> packages/sqlalchemy/orm/unitofwork.py", line 370, in execute
>>     postsort_actions = self._generate_actions()
>>   File "/Users/hugo/Dropbox/lahey/api/.venv/lib/python3.6/site-
>> packages/sqlalchemy/orm/unitofwork.py", line 329, in _generate_actions
>>     if action.execute(self):
>>   File "/Users/hugo/Dropbox/lahey/api/.venv/lib/python3.6/site-
>> packages/sqlalchemy/orm/unitofwork.py", line 454, in execute
>>     self.dependency_processor.presort_deletes(uow, delete_states)
>>   File "/Users/hugo/Dropbox/lahey/api/.venv/lib/python3.6/site-
>> packages/sqlalchemy/orm/dependency.py", line 419, in presort_deletes
>>     self._passive_delete_flag)
>>   File "/Users/hugo/Dropbox/lahey/api/.venv/lib/python3.6/site-
>> packages/sqlalchemy/orm/unitofwork.py", line 225, in
>> get_attribute_history
>>     attributes.LOAD_AGAINST_COMMITTED)
>>   File "/Users/hugo/Dropbox/lahey/api/.venv/lib/python3.6/site-
>> packages/sqlalchemy/orm/attributes.py", line 928, in get_history
>>     current = self.get(state, dict_, passive=passive)
>>   File "/Users/hugo/Dropbox/lahey/api/.venv/lib/python3.6/site-
>> packages/sqlalchemy/orm/attributes.py", line 603, in get
>>     value = self.callable_(state, passive)
>>   File "/Users/hugo/Dropbox/lahey/api/.venv/lib/python3.6/site-
>> packages/sqlalchemy/orm/strategies.py", line 623, in _load_for_state
>>     return self._emit_lazyload(session, state, ident_key, passive)
>>   File "<string>", line 1, in <lambda>
>>   File "/Users/hugo/Dropbox/lahey/api/.venv/lib/python3.6/site-
>> packages/sqlalchemy/orm/strategies.py", line 747, in _emit_lazyload
>>     result = q(session).params(**params).all()
>>   File "/Users/hugo/Dropbox/lahey/api/.venv/lib/python3.6/site-
>> packages/sqlalchemy/ext/baked.py", line 399, in all
>>     return list(self)
>>   File "/Users/hugo/Dropbox/lahey/api/.venv/lib/python3.6/site-
>> packages/sqlalchemy/ext/baked.py", line 296, in __iter__
>>     baked_context = bq._bake(self.session)
>>   File "/Users/hugo/Dropbox/lahey/api/.venv/lib/python3.6/site-
>> packages/sqlalchemy/ext/baked.py", line 198, in _bake
>>     query = self._as_query(session)
>>   File "/Users/hugo/Dropbox/lahey/api/.venv/lib/python3.6/site-
>> packages/sqlalchemy/ext/baked.py", line 221, in _as_query
>>     query = step(query)
>>   File "/Users/hugo/Dropbox/lahey/api/.venv/lib/python3.6/site-
>> packages/sqlalchemy/orm/strategies.py", line 727, in <lambda>
>>     strategy_options.Load.for_existing_path(
>>   File "/Users/hugo/Dropbox/lahey/api/.venv/lib/python3.6/site-
>> packages/sqlalchemy/util/langhelpers.py", line 977, in __getattr__
>>     attr = getattr(self.module, key)
>>   File "/Users/hugo/Dropbox/lahey/api/.venv/lib/python3.6/site-
>> packages/sqlalchemy/util/langhelpers.py", line 767, in __get__
>>     obj.__dict__[self.__name__] = result = self.fget(obj)
>>   File "/Users/hugo/Dropbox/lahey/api/.venv/lib/python3.6/site-
>> packages/sqlalchemy/util/langhelpers.py", line 962, in module
>>     % (self._il_path, self._il_addtl))
>> ImportError: importlater.resolve_all() hasn't been called (this is
>> sqlalchemy.orm strategy_options)
>
>
>
> My model declaration for this object looks like this:
> import datetime
> from sqlalchemy_utils.types.password import PasswordType
> from sqlalchemy_utils import force_auto_coercion
>
> from app.extensions import db
>
> # Setup coercion of passwords
> force_auto_coercion()
>
>
> class User(db.Model):
>  id = db.Column(db.Integer, primary_key=True)
>  email = db.Column(db.String(120), unique=True, nullable=False)
>  password = db.Column(PasswordType(schemes=['pbkdf2_sha512']), nullable=
> False)
>  name = db.Column(db.String(256))
>  created_at = db.Column(db.DateTime, default=datetime.datetime.now)
>  updated_at = db.Column(db.DateTime, onupdate=datetime.datetime.now)
>
> I can delete objects of other models without trouble. I've tried to follow
> the code in the traceback, but can't really make sense of it.
> Could this have something to do with the PasswordType column from
> sqlalchemy_utils?
>
> Help is much appreciated!
>
> /Hugo
>
> --
> SQLAlchemy -
> The Python SQL Toolkit and Object Relational Mapper
>
> http://www.sqlalchemy.org/
>
> To post example code, please provide an MCVE: Minimal, Complete, and
> Verifiable Example. See http://stackoverflow.com/help/mcve for a full
> description.
> ---
> You received this message because you are subscribed to the Google Groups
> "sqlalchemy" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to [email protected].
> To post to this group, send email to [email protected].
> Visit this group at https://groups.google.com/group/sqlalchemy.
> For more options, visit https://groups.google.com/d/optout.
>

-- 
SQLAlchemy - 
The Python SQL Toolkit and Object Relational Mapper

http://www.sqlalchemy.org/

To post example code, please provide an MCVE: Minimal, Complete, and Verifiable 
Example.  See  http://stackoverflow.com/help/mcve for a full description.
--- 
You received this message because you are subscribed to the Google Groups 
"sqlalchemy" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at https://groups.google.com/group/sqlalchemy.
For more options, visit https://groups.google.com/d/optout.

Reply via email to