On 10/26/2016 10:40 PM, Alfred Soeng wrote:
Hi Mike,
Are you free to talk through the fb messenger about my issue if you are
good to it?
Hi Alfred -
unfortunately my time is limited to being able to answer isolated
questions on this list. However, there are a handful of people you can
chat with on the IRC channel on freenode channel #sqlalchemy including
some long-time help veterans.
- mike
Best,
Alfred
On Tue, Oct 25, 2016 at 2:44 PM, mike bayer <[email protected]
<mailto:[email protected]>> wrote:
In a case like this I don't know what the problem is without being
able to run an example. The guidelines at
http://stackoverflow.com/help/mcve
<http://stackoverflow.com/help/mcve> would make this easiest. Can
we see complete mappings / table information (only what's needed to
reproduce the problem) as well as how you are creating these Query
and/or select() objects (it seems these are select() )?
Also need version of SQLAlchemy in use.
thanks!
On 10/25/2016 04:48 PM, Alfred Soeng wrote:
When I union 2 queries, it seems combine the same relationship
together
and cause the alias problem
In the code, it generated 2 queries like:
q1:
SELECT anon_1.id <http://anon_1.id> AS anon_1_id,
anon_1.vendor_id AS anon_1_vendor_id,
vendor_1.id <http://vendor_1.id> AS vendor_1_id, vendor_1.name
<http://vendor_1.name> AS vendor_1_name,
vendor_1.sf_id AS vendor_1_sf_id, vendor_1.transit_as_id AS
vendor_1_transit_as_id, vendor_1.created_by AS vendor_1_created_by,
vendor_1.created_at AS vendor_1_created_at, vendor_1.updated_by AS
vendor_1_updated_by, vendor_1.updated_at AS vendor_1_updated_at,
vendor_1.active AS vendor_1_active
FROM (SELECT asset_transport_circuit.id
<http://asset_transport_circuit.id> AS id,
asset_transport_circuit.vendor_id AS vendor_id
FROM asset_transport_circuit) AS anon_1 LEFT OUTER JOIN vendor AS
vendor_1 ON vendor_1.id <http://vendor_1.id> = anon_1.vendor_id
q2:
SELECT anon_1.id <http://anon_1.id> AS anon_1_id,
anon_1.vendor_id AS anon_1_vendor_id,
vendor_1.id <http://vendor_1.id> AS vendor_1_id, vendor_1.name
<http://vendor_1.name> AS vendor_1_name,
vendor_1.sf_id AS vendor_1_sf_id, vendor_1.transit_as_id AS
vendor_1_transit_as_id, vendor_1.created_by AS vendor_1_created_by,
vendor_1.created_at AS vendor_1_created_at, vendor_1.updated_by AS
vendor_1_updated_by, vendor_1.updated_at AS vendor_1_updated_at,
vendor_1.active AS vendor_1_active
FROM (SELECT asset_transit_circuit.id
<http://asset_transit_circuit.id> AS id,
asset_transit_circuit.vendor_id AS vendor_id
FROM asset_transit_circuit) AS anon_1 LEFT OUTER JOIN vendor AS
vendor_1
ON vendor_1.id <http://vendor_1.id> = anon_1.vendor_id
But when I called the q1.union(q2), it said an column issue
because the
union merge the same 'LEFT OUTER JOIN vendor AS vendor_1 ON
vendor_1.id <http://vendor_1.id>
= anon_1.vendor_id' together and cause a alias problem:
q1.union(q2):
(1054, "Unknown column '`anon_2`.`vendor_id`' in 'on clause'") [SQL:
'SELECT anon_1.anon_2_id AS anon_1_anon_2_id, anon_2.vendor_id AS
anon_2_vendor_id, vendor_1.id <http://vendor_1.id> AS
vendor_1_id, vendor_1.name <http://vendor_1.name> AS
vendor_1_name, vendor_1.sf_id AS vendor_1_sf_id,
vendor_1.transit_as_id
AS vendor_1_transit_as_id, vendor_1.created_by AS
vendor_1_created_by,
vendor_1.created_at AS vendor_1_created_at, vendor_1.updated_by AS
vendor_1_updated_by, vendor_1.updated_at AS vendor_1_updated_at,
vendor_1.active AS vendor_1_active \nFROM (SELECT
asset_transport_circuit.id <http://asset_transport_circuit.id>
AS id, asset_transport_circuit.vendor_id AS
vendor_id \nFROM asset_transport_circuit) AS anon_2, (SELECT /*
<string>:2 union --/--/--/-- */ anon_2.id <http://anon_2.id> AS
anon_2_id \nFROM (SELECT
asset_transport_circuit.id <http://asset_transport_circuit.id>
AS id, asset_transport_circuit.vendor_id AS
vendor_id \nFROM asset_transport_circuit) AS anon_2 \nWHERE
anon_2.id <http://anon_2.id> IN
(%s, %s, %s) UNION SELECT anon_3.id <http://anon_3.id> AS
anon_3_id \nFROM (SELECT
asset_transit_circuit.id <http://asset_transit_circuit.id> AS
id, asset_transit_circuit.vendor_id AS
vendor_id \nFROM asset_transit_circuit) AS anon_3 \) AS anon_1 LEFT
OUTER JOIN vendor AS vendor_1 ON vendor_1.id
<http://vendor_1.id> = anon_2.vendor_id'
The 2 mappers are the same but different name: like below:
dc_select =
select([AssetTransportCircuit.id, AssetTransportCircuit.vendor_id,])
class TT_Circuit(object):
def __init__(self, asset_id, vendor_id, vendor):
self.asset_id = asset_id
self.vendor_id = vendor_id
self.vendor = vendor
circuit_mapper = mapper(
TT_Circuit,
dc_select,
primary_key=[dc_select.c.id <http://dc_select.c.id>],
properties={
'asset_id': dc_select.c.id <http://dc_select.c.id>,
'vendor_id': dc_select.c.vendor_id.label('vendor_id'),
'vendor': relationship(
vendor_mapper,
primaryjoin=and_(
dc_select.c.vendor_id == foreign(Vendor.id),
foreign(Vendor.active),
),
uselist=False,
viewonly=True,
),
}
)
Is there a way to resolve the problem?
--
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
<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]
<mailto:sqlalchemy%[email protected]>
<mailto:[email protected]
<mailto:sqlalchemy%[email protected]>>.
To post to this group, send email to [email protected]
<mailto:[email protected]>
<mailto:[email protected]
<mailto:[email protected]>>.
Visit this group at https://groups.google.com/group/sqlalchemy
<https://groups.google.com/group/sqlalchemy>.
For more options, visit https://groups.google.com/d/optout
<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
<http://stackoverflow.com/help/mcve> for a full description.
--- You received this message because you are subscribed to a topic
in the Google Groups "sqlalchemy" group.
To unsubscribe from this topic, visit
https://groups.google.com/d/topic/sqlalchemy/kHLmMxAlmxw/unsubscribe
<https://groups.google.com/d/topic/sqlalchemy/kHLmMxAlmxw/unsubscribe>.
To unsubscribe from this group and all its topics, send an email to
[email protected]
<mailto:sqlalchemy%[email protected]>.
To post to this group, send email to [email protected]
<mailto:[email protected]>.
Visit this group at https://groups.google.com/group/sqlalchemy
<https://groups.google.com/group/sqlalchemy>.
For more options, visit https://groups.google.com/d/optout
<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]
<mailto:[email protected]>.
To post to this group, send email to [email protected]
<mailto:[email protected]>.
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.