2013-07-16 1 views
0

Я пытаюсь выразить запросы SQL как питона код, но у меня есть проблема, выражающий предельную функциюотображение SQL в 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

Вы бы использовать итерации, списковых или генераторы и 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