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='[email protected]',
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 <[email protected] <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 [email protected] <javascript:>.
> > To post to this group, send email to [email protected]
> <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 [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.