after two reports, it is:
https://bitbucket.org/zzzeek/sqlalchemy/issue/3469/comparison-in-persistencepy-can-trip-up-on
On 7/1/15 12:23 PM, Troy Toman wrote:
I am seeing a behavior similar to Issue #3402 but it exists in
SQLAlchemy 1.0.6 and it involves using geoalchemy2. I have filed an
issue there but since it is behaving differently in sqlalchemy 0.9.3,
I wanted to raise it here as well.
Test program:
import geoalchemy2
from sqlalchemy import *
from sqlalchemy.orm import *
from sqlalchemy.ext.declarative import declarative_base
Base = declarative_base()
user = 'user'
password = 'pword'
host = 'localhost'
port = '5432'
db_name = 'dev'
db_uri = 'postgresql+psycopg2://%s:%s@%s:%s/%s' % (user,
password,
host,
port,
db_name)
engine = create_engine(db_uri)
Base.metadata.create_all(engine)
class A(Base):
__tablename__ = 'tests'
id = Column(Integer, primary_key=True)
geom = Column(geoalchemy2.Geometry('POLYGON'))
s = Session(engine)
A.__table__.create(engine)
s.add(A(id = 1, geom='POLYGON((0 0,1 0,1 1,0 1,0 0))'))
s.commit()
a1 = s.query(A).first()
a1.geom = None
s.commit()
A.__table__.drop(engine)
Trace:
Traceback (most recent call last):
File "sqatest.py", line 38, in <module>
s.commit()
File
"/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/session.py", line
790, in commit
self.transaction.commit()
File
"/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/session.py", line
392, in commit
self._prepare_impl()
File
"/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/session.py", line
372, in _prepare_impl
self.session.flush()
File
"/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/session.py", line
2004, in flush
self._flush(objects)
File
"/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/session.py", line
2122, in _flush
transaction.rollback(_capture_exception=True)
File
"/usr/local/lib/python2.7/dist-packages/sqlalchemy/util/langhelpers.py",
line 60, in __exit__
compat.reraise(exc_type, exc_value, exc_tb)
File
"/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/session.py", line
2086, in _flush
flush_context.execute()
File
"/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/unitofwork.py",
line 373, in execute
rec.execute(self)
File
"/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/unitofwork.py",
line 532, in execute
uow
File
"/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/persistence.py",
line 170, in save_obj
mapper, table, update)
File
"/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/persistence.py",
line 630, in _emit_update_statements
lambda rec: (
File
"/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/persistence.py",
line 459, in _collect_update_commands
value, state.committed_state[propkey]):
File
"/usr/local/lib/python2.7/dist-packages/sqlalchemy/sql/elements.py",
line 2726, in __bool__
raise TypeError("Boolean value of this clause is not defined")
TypeError: Boolean value of this clause is not defined
This only happens when a 'geom' attribute is defined with a valid
geometry and then assigned 'None'
Assigning an initial geom value of None does not cause an issue. It
also works fine as written in sqlalchemy 0.9.3
I would love to know if this needs to be addressed in geoalchemy2 or
is truly a sqlalchemy 1.0
--
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]
<mailto:[email protected]>.
To post to this group, send email to [email protected]
<mailto:[email protected]>.
Visit this group at http://groups.google.com/group/sqlalchemy.
For more options, visit https://groups.google.com/d/optout.
--
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 http://groups.google.com/group/sqlalchemy.
For more options, visit https://groups.google.com/d/optout.