0

我正在尝试将 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中表达极限函数的方式很麻烦而且不是很优雅,所以我希望有人能帮助用更优雅的方式表达这一点。

4

1 回答 1

0

您将使用迭代、列表推导或生成器和itertools模块

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
于 2013-07-16T10:18:21.873 回答