- changed status to wontfix
bind params confused when mapping to select with IN
Issue #853
resolved
rom sqlalchemy import *
from sqlalchemy.orm import *
metadata = MetaData("...")
metadata.bind.echo=True
table = Table("test", metadata,
Column("id", Integer, primary_key=True),
Column("data", String))
table.create()
table.insert().execute([1}, {"data": 2}, {"data": 3},
{"data": 4}, {"data": 5}, {"data": 6},
{"data": 7}, {"data": 8}, {"data": 9},
{"data": 10}, {"data": 11}, {"data": 12},
{"data": 13}, {"data": 14}, {"data": 15},
{"data": 30}, {"data": 44}, {"data": 55}]({"data":))
test = table.select(table.c.id.in_([3, 4, 5, 8, 10, 11, 13, 30, 44,
45](2,))).alias("testView")
class Test(object):
pass
mapper(Test, test)
referer = Table("referer", metadata,
Column("id", Integer, primary_key=True),
Column("fk", Integer, ForeignKey("test.id")))
referer.create()
referer.insert().execute([2}]({"fk":))
class Referer(object):
pass
mapper(Referer, referer, properties={"ref": relation(Test)})
session = create_session()
t = session.query(Test).get(2)
print t
r = session.query(Referer).get(1)
print r.fk, r.ref
It prints
None
2 None
and the SQL statement for the first get should have param_1=1 instead
of None.
2007-11-06 16:26:30,394 INFO sqlalchemy.engine.base.Engine.0x..34
SELECT "testView".id AS "testView_id", "testView".data AS
"testView_data"
FROM (SELECT test.id AS id, test.data AS data
FROM test
WHERE test.id IN (%(test_id)s, %(test_id_1)s, %(test_id_2)s, %
(test_id_3)s, %(test_id_4)s, %(test_id_5)s, %(test_id_6)s, %
(test_id_7)s, %(test_id_8)s, %(test_id_9)s, %(test_id_10)s)) AS
"testView"
WHERE "testView".id = %(param_1)s ORDER BY "testView".id
2007-11-06 16:26:30,394 INFO sqlalchemy.engine.base.Engine.0x..34
{'test_id_3': 5, 'test_id_10': 45, 'param_1': None, 'test_id_8': 30,
'test_id_9': 44, 'test_id_1': 3, 'test_id_2': 4, 'test_id': 2,
'test_id_4': 8, 'test_id_5': 10, 'test_id_6': 11, 'test_id_7': 13}
Comments (6)
-
reporter -
reporter - changed status to open
- removed status
hooray, fails on linux, its dictionaries...
-
reporter - changed status to resolved
still cant reproduce on my own linux box but its been identified, fixed in 4b6881af557baf36ba04766fd92bbca88dc515b5.
-
reporter the last checkin breaks this:
table.update(table.c.somecol==5).execute(somecol=10)
-
reporter - changed status to resolved
-
reporter - removed milestone
Removing milestone: 0.4.xx (automated comment)
- Log in to comment
cant reproduce. output with PG on both 0.4.0 and 0.4 trunk is: