在python中循环SQL查询

时间:2016-09-15 19:22:21

标签: python mysql loops

我正在编写一个python脚本,它在数据库中查询URL字符串。以下是我的摘录。

db.execute('select sitevideobaseurl,videositestring '
          'from site, video '
          'where siteID =1 and site.SiteID=video.VideoSiteID limit 1')
result = db.fetchall()

filename = '/home/Site_info'
output = open(filename, "w")
for row in result:
  videosite= row[0:2]
  link = videosite[0].format(videosite[1])
  full_link = link.replace("http://","https://")
  print full_link
  output.write("%s\n"%str(full_link))
output.close()

查询基本上给出了一个URL链接。它给了我一个表的baseURL和另一个表的视频站点字符串。

output: https://www.youtube.com/watch?v=uqcSJR_7fOc

SiteID是主键,它是int而不是按顺序。

我希望循环这个sql查询为每次执行选择一个新的siteId,这样我每次都有唯一的站点URL并将所有结果写入文件。

desired output: https://www.youtube.com/watch?v=uqcSJR_7fOc
                https://www.dailymotion.com/video/hdfchsldf0f

大约有1178条记录。

感谢您的时间和提前帮助。

1 个答案:

答案 0 :(得分:1)

我不确定我是否完全明白你要做什么。我认为您的目标是获取所有视频链接的列表。您可以通过加入来自sitevideobaseurl的{​​{1}}和来自site的{​​{1}}来获得视频的链接。

根据我的经验,让数据库完成繁重工作要容易得多,它就是为此而构建的。加入表,返回所有结果然后循环遍历它们,而不是对每行的数据库进行后续查询应该更有效。

代码看起来像这样:(小心,我没有测试过这个)

videositestring

如果您有其他理由希望通过一个获取这些,可能是获取所有video的列表并将其存储在列表中。然后,为该列表中的每个项目启动一个循环,并通过参数化查询将id插入到查询中。