Я не могу воспроизвести вашу проблему.Пожалуйста, предоставьте пример кода, который я могу запустить, чтобы воспроизвести его.
Вот код, который выполняет то, что вы описываете, но ведет себя так, как и следовало ожидать:
from sqlalchemy import Column, Integer, Unicode, create_engine
from sqlalchemy.orm import create_session
from sqlalchemy.ext.declarative import declarative_base
engine = create_engine('sqlite://')
Base = declarative_base(bind=engine)
class User(Base):
__tablename__ = 'users'
id = Column(Integer, primary_key=True)
name = Column(Unicode(60))
Base.metadata.create_all()
После этой настройки добавьте нового пользователя:
s = create_session(autocommit=False, autoflush=False)
u = User()
u.name = u'Cheezo'
s.add(u)
s.flush()
Затем запросить обратно:
>>> u2 = s.query(User).first()
>>> print u2.name
Cheezo
>>> u2 is u
True