so here is your test case:
from sqlalchemy.sql import column
from sqlalchemy import Integer
x = (column("foo", Integer) * column("bar", Integer)) == 27
assert isinstance(x.right.type, Integer)
you show me what is particular about your setup that causes "x.right.type" to
be String, or something other than Integer.
Choices include:
- SQLAlchemy version (the above is 0.6.3)
- types of the "qty" and "price" columns are not Integer
- etc.
you should be able to reproduce the above code using your Sometable.qty and
Sometable.price column objects.
On Jul 22, 2010, at 5:05 PM, Timuçin Kızılay wrote:
> I have a strange problem in sa.
> I've asked turbogears mailinglist and someone there suggested to post it here
> too.
>
> I've forwarded the post from there but here is an example of the problem.
>
> example code:
> prc_filter=24
> q_sometable=DBSession.query(model.Sometable)
> q_sometable=q_sometable.filter((model.Sometable.qty*model.Sometable.price)==prc_filter)
> ----------
>
> I'm trying to filter a query by two colums multiplied. I think this is a
> common filtering operation.
> I'm using turbogears 2.1b2 and sqlite.
>
> And some other person from TG mailinglist told me that this problem is sqlite
> only, he had the same problem too and it was solved when he switched to mysql.
>
> And this one works. When I send the filter as string like this:
> ------------
> f = u'sometable.qty * sometable.price = 24'
> q_sometable = q_sometable.filter(f)
> ----------
>
>
>
>
>
> -------- Orijinal Mesaj --------
> Konu: Re: [TurboGears] strange sql query problem.
> Tarih: Thu, 22 Jul 2010 12:34:00 +0200
> Kimden: Diez B. Roggisch <[email protected]>
> Cevapla: [email protected]
> Kime: [email protected]
> Tercihler: <[email protected]>
> <[email protected]> <[email protected]>
>
> On Thursday, July 22, 2010 12:24:53 Timuçin Kızılay wrote:
>> Diez B. Roggisch yazmış:
>> > On Thursday, July 22, 2010 11:47:13 Timuçin Kızılay wrote:
>> >> I'm trying to make a query like this:
>> >> >> prc_filter = 24
>> >> >> q_sometable = DBSession.query(model.Sometable)
>> >> q_sometable = q_sometable.filter((model.Sometable.qty *
>> >> model.Sometable.price)==prc_filter)
>> >> >> This do not give any error and when I look at the paster log I see that
>> >> it generated a query with where part like this:
>> >> >> ------------
>> >> WHERE sometable.qty * sometable.price = ?
>> >> >> 12:41:24,272 INFO [sqlalchemy.engine.base.Engine.0x...ba0c] ['24']
>> > > This looks as if the above is *not* what you really do. Because '24' is a
>> > *string*, not an integer...
>> > > Diez
>> No, it's an integer but the log shows it as string.
>> I think the problem is filtering on two columns multiplied.
>> When I filter only one column, it works.
>> q_sometable = q_sometable.filter(model.Sometable.price==prc_filter)
>> this filter works and generated sql shown on the log is still ['24'] but
>> it works.
>
> Ah. Strange enough.
>
>> I think it's a SA bug, it try to put those values into query as parameters.
>
> If so, I suggest you take it to the SA-mailinglist. Michael Bayer is
> incredible responsive. Of course you should try with the latest + greatest SA
> first.
>
> Diez
>
> --
> You received this message because you are subscribed to the Google Groups
> "TurboGears" 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/turbogears?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.
>
--
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.