Manlio Perillo wrote:
> -----BEGIN PGP SIGNED MESSAGE-----
> Hash: SHA1
>
> Hi.
>
> Here is a simple example of using joins in SQLAlchemy:
>
> from sqlalchemy import schema, types, sql, create_engine
>
> metadata = schema.MetaData()
> x = schema.Table(
> 'x', metadata,
> schema.Column('id', types.Integer, primary_key=True),
> schema.Column('x', types.Text, nullable=False)
> )
>
> y = schema.Table(
> 'y', metadata,
> schema.Column('id', types.Integer, primary_key=True),
> schema.Column('y', types.Text, nullable=False),
>
> schema.ForeignKeyConstraint(['id'], [x.c.id])
> )
>
> engine = create_engine('sqlite://')
> engine.create(metadata)
>
> try:
> engine.execute(x.insert(), id=1, x='X')
> engine.execute(y.insert(), id=1, y='Y')
>
> query = sql.join(x, y).select()
> r = engine.execute(query).fetchone()
>
> print r['id']
> finally:
> engine.drop(metadata)
>
>
>
> This code will raise an:
> sqlalchemy.exc.InvalidRequestError: Ambiguous column name 'id' in result
> set! try 'use_labels' option on select statement.
send fold_equivalents=True to join().select(). This flag has been
deprecated for awhile but I suppose it is harmless if you truly have a use
case for it (i.e. i will consider un-deprecating it, i didnt think anyone
would ever need it).
>
> Now, I would like to avoid using labels, since it will make code much
> more verbose.
>
> What is the reason why SQLAlchemy is including the `id` column two times?
> After all, it should know that the `id` column is being used for the join.
>
> In plain SQL (Postgresql database):
>
> manlio=> select * from x NATURAL JOIN y;
> id | x | y
> - ----+---+---
> 1 | X | Y
> (1 riga)
>
> manlio=> select * from x JOIN y USING (id);
> id | x | y
> - ----+---+---
> 1 | X | Y
> (1 riga)
>
> the `id` column is being added only one time, as it should be.
>
>
> Thanks Manlio
> -----BEGIN PGP SIGNATURE-----
> Version: GnuPG v1.4.10 (GNU/Linux)
> Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org
>
> iEYEARECAAYFAkt62u8ACgkQscQJ24LbaUQGkwCfa/cSeg9xk1AFHTqTuDrA+LPt
> aREAn0SiG75RNFav7cBv2M0Cacu2iyUx
> =I+f+
> -----END PGP SIGNATURE-----
>
> --
> You received this message because you are subscribed to the Google Groups
> "sqlalchemy" group.
> To post to this group, send email to [email protected].
> To unsubscribe from this group, send email to
> [email protected].
> For more options, visit this group at
> http://groups.google.com/group/sqlalchemy?hl=en.
>
>
--
You received this message because you are subscribed to the Google Groups
"sqlalchemy" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to
[email protected].
For more options, visit this group at
http://groups.google.com/group/sqlalchemy?hl=en.