这里只有一个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
答案 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
我确定会有更漂亮的东西,但这就是我现在所做的。