Say dict = {"key1": value1, "key2": value2}
my select statement should look like select * from blah where key1 =
value1 and key2 = value2
I know this has to do with constructing the right where clause
element, but I cannot seem to find documentation on it.
select([table], meta.c.<columnname> == value) doesn't take a variable
key.
Any help would be greatly appreciated.
-T
You can treat meta.c as a dict, e.g. meta.c[key] == value.
-Conor
If yes, then you probably want to look at query.Query.filter and/or
query.Query.filter_by.
Werner
@Conor: I tried the dict approach. The problem is, I don't know how
many key value pairs I will have. I will have to use a map, or map* to
construct the full set of where clauses. This is the syntax I am not
able to figure out.
Thanks for the replies.
-T
How about this:
clauses = [meta.c[key] == value for (key, value) in dict.iteritems()]
select([table], and_(*clauses))
or, generatively:
s = select([table])
for (key, value) in dict.iteritems():
s = s.where(meta.c[key] == value)
-Conor
Can you please point me to the documentation that discusses the
different ways of constructing select statements, where clauses, etc.
I have not seen the generative way before. I tried really hard on
Google, this forum specifically, stackoverflow, etc. The API
documentation is sufficient, I am sure; but is not "tutorial" like.
Thanks again. This is greatly appreciated.
-T
Thanks agian,
-T
column_list = ["url", 'html']
what_fields = [meta.c[x] for x in column_list]
print what_fields
[Column(u'url', VARCHAR(length=None, convert_unicode=False,
assert_unicode=None, unicode_error=None, _warn_on_bytestring=False),
table=<html_frontpage>), Column(u'html', TEXT(length=None,
convert_unicode=False, assert_unicode=None, unicode_error=None,
_warn_on_bytestring=False), table=<html_frontpage>)]
My table doesn't have column names that are unicode strings.
Am I missing something here?
-T