Hrmm, that's not what I'm getting. Maybe I'm misunderstanding something - here's a simple test to illustrate my example. test_add() works as expected, test_merge() fails.
import sqlalchemy as sa from sqlalchemy.orm import sessionmaker from sqlalchemy.ext.declarative import declarative_base Base = declarative_base() class User(Base): __tablename__ = 'user' id = sa.Column(sa.Integer, primary_key=True) email = sa.Column(sa.Text) profile = sa.orm.relationship('Profile', uselist=False, single_parent=True) class Profile(Base): __tablename__ = 'profile' id = sa.Column(sa.Integer, primary_key=True) user_id = sa.Column(sa.Integer, sa.ForeignKey('user.id'), nullable=False) interests = sa.Column(sa.Text) engine = sa.create_engine('postgresql://localhost/test') Base.metadata.create_all(engine) session = sessionmaker(bind=engine)() def create_user(): return User( email='f...@bar.com', profile=Profile(interests='Cooking, Dancing'), ) def test_merge(): user = create_user() session.merge(user) session.commit() assert user.id assert user.profile.id def test_add(): user = create_user() session.add(user) session.commit() assert user.id assert user.profile.id test_add() test_merge() On Monday, January 1, 2018 at 9:49:55 PM UTC-5, Mike Bayer wrote: > > On Mon, Jan 1, 2018 at 9:18 PM, Tim Chen <timc...@gmail.com <javascript:>> > wrote: > > When I merge() an object without a PK, I expect similar behavior to > add(), > > in that the autogenerated PK is returned and set on the object. Is that > not > > expected behavior? > > it is, assuming the Session has flushed. > > > > > -- > > 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 sqlalchemy+...@googlegroups.com <javascript:>. > > To post to this group, send email to sqlal...@googlegroups.com > <javascript:>. > > 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 sqlalchemy+unsubscr...@googlegroups.com. To post to this group, send email to sqlalchemy@googlegroups.com. Visit this group at https://groups.google.com/group/sqlalchemy. For more options, visit https://groups.google.com/d/optout.