我正在尝试将SQL查询表示为python代码,但我无法表达限制函数
我将python中的SQL表表示为
[{'col1':val, 'col2':val,...},...]
以下SQL表达式
SELECT x.val, y.val
FROM R x, S y
WHERE x.id = y.id
然后在python中表示为
for x in R:
for y in S:
if x["id"] == y["id"]:
x["val"], y["val"]
如果我想将输出限制为10行,我可以写
i = 0
for x in R:
for y in S:
if x["id"] == y["id"]:
x["val"], y["val"]
i += 1
if i == 10:
break
if i == 10:
break
我在python中表达限制函数的方式很麻烦而且不是很优雅,所以我希望有人能以更优雅的方式帮助表达它。
答案 0 :(得分:0)
您将使用迭代,列表推导或生成器以及itertools
module:
from itertools import product, islice
# all values, generator expression
query = ((x['val'], y['val']) for x, y in product(R, S) if x['id'] == y['id'])
# just the first 10
limited = islice(query, 10)
for row in limited:
print row