循环返回Python 2.7中的部分结果?

时间:2016-02-11 04:33:03

标签: python loops sqlite

这里只有一个Python初学者,而且我已经花了几个小时看着这个试图找出我做错了什么...

我使用sqlString从一个数据集中挑选任意10个商店并查询storeID。我采取的下一步是循环我的sqlString的结果来查询另一个表,并在我的第一个查询中为每个10个商店ID提供25个随机结果。

我遇到的问题是我的输出似乎只返回一个随机存储的25个匹配项。所以即使我总共得到250条记录(25 * 10),我的输出中只能得到25条记录。有没有人对如何解决这个问题有任何建议?

以下是我正在使用的代码:

sqlstring = """
select StoreID from tblStoreData where State = 'NY' order by random() limit 10"""

NYstores = myCursor.execute(sqlstring).fetchall()
print NYstores

for storeID in NYstores:
    sqlstring = """select * from tblDistance where FromStore = %s order by random() limit 25""" % (storeID)
    otherStore = myCursor.execute(sqlstring).fetchall()

print otherStore
myConnection = sqlite3.connect('RestaurantData.db')
myCursor = myConnection.cursor()

-Nick

2 个答案:

答案 0 :(得分:0)

Python是缩进敏感的。缩进“for”循环行后面的行以获得完整循环。

答案 1 :(得分:0)

我不知道for循环的结束位置(因为那里没有标识),但是你是否可以循环通过NYstores将fetch分配给覆盖前一个值的同一个变量?

我认为你应该在打印之前尝试追加(而不是分配)for循环中的新值。

这样的事情可能有用:

result = []
for storeID in NYstores:
    sqlstring = """select * from tblDistance where FromStore = %s order by random() limit 25""" % (storeID)
    otherStore = myCursor.execute(sqlstring).fetchall()
    for item in otherStore:
        result.append(item)

print result

我确定会有更漂亮的东西,但这就是我现在所做的。