Setting attributes on ActiveMapper Boolean Types not working properly with MySQL 5.x

Issue #359 resolved
Former user created an issue

Problem using MySQL 5.x

class User(ActiveMapper): class mapping: id = column(Integer, primary_key=True) enabled = column(Boolean, default=False)

...

user = session.query(User).get_by(id=4) user.enabled = False

...

something like...

File "build\bdist.win32\egg\sqlalchemy\engine\base.py", line 348, in _execute SQLError: (OperationalError) (1366, "Incorrect integer value: 'False' for column 'enabled' at row 2") 'UPDATE tg_user SET enabled=%s WHERE user.id = %s' 4L

last line should be 4L or something.

-percious

Comments (1)

  1. Mike Bayer repo owner
    from sqlalchemy import *
    from sqlalchemy.ext.activemapper import *
    
    class User(ActiveMapper):
        class mapping:
            id = column(Integer, primary_key=True) 
            enabled = column(Boolean, default=False)
    
    metadata.connect('mysql://scott:tiger@localhost/test', echo=True)
    metadata.create_all()
    
    u = User()
    u.enabled = True
    objectstore.flush()
    
    objectstore.clear()
    
    user = objectstore.query(User).get_by(id=u.id) 
    user.enabled = False
    objectstore.flush()
    
    
    
    
    2006-10-31 14:02:45,375 INFO sqlalchemy.engine.base.Engine.0x..f0 show table status like 'user'
    2006-10-31 14:02:45,376 INFO sqlalchemy.engine.base.Engine.0x..f0 None
    2006-10-31 14:02:45,394 INFO sqlalchemy.engine.base.Engine.0x..f0 BEGIN
    2006-10-31 14:02:45,399 INFO sqlalchemy.engine.base.Engine.0x..f0 INSERT INTO `user` (enabled) VALUES (%s)
    2006-10-31 14:02:45,400 INFO sqlalchemy.engine.base.Engine.0x..f0 [1](1)
    2006-10-31 14:02:45,410 INFO sqlalchemy.engine.base.Engine.0x..f0 COMMIT
    2006-10-31 14:02:45,425 INFO sqlalchemy.engine.base.Engine.0x..f0 SELECT `user`.enabled AS user_enabled, `user`.id AS user_id 
    FROM `user` 
    WHERE `user`.id = %s ORDER BY `user`.id 
     LIMIT 1
    2006-10-31 14:02:45,427 INFO sqlalchemy.engine.base.Engine.0x..f0 [4L](4L)
    2006-10-31 14:02:45,446 INFO sqlalchemy.engine.base.Engine.0x..f0 BEGIN
    2006-10-31 14:02:45,450 INFO sqlalchemy.engine.base.Engine.0x..f0 UPDATE `user` SET enabled=%s WHERE `user`.id = %s
    2006-10-31 14:02:45,451 INFO sqlalchemy.engine.base.Engine.0x..f0 [4L](0,)
    2006-10-31 14:02:45,454 INFO sqlalchemy.engine.base.Engine.0x..f0 COMMIT
    
  2. Log in to comment