python - 在 python 中循环 SQL 查询

标签 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 是主键,是整型的,没有顺序。

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

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

大约有1178条记录。

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

最佳答案

我不确定我是否完全理解您要尝试做的事情。我认为您的目标是获得所有视频链接的列表。您可以通过加入来自 sitesitevideobaseurl 和来自 videovideositestring 来获得视频链接。

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

代码应该是这样的:(小心,我没有测试这个)

query = """
select s.sitevideobaseurl, 
       v.videositestring
  from video as v
  join site as s
    on s.siteID = v.VideoSiteID
        """
db.execute(query)
result = db.fetchall()

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

如果您有其他原因想要逐个获取这些,一个想法可能是获取所有 SiteID 的列表并将它们存储在列表中。之后,您为该列表中的每个项目启动一个循环,并通过参数化查询将 id 插入到查询中。

关于python - 在 python 中循环 SQL 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39518814/

相关文章:

iphone - 使用 Python 解析 .strings 文件

python - 使用单例类时在多处理中共享状态

python - 如何使用 Python 获取 HTML 文件?

php - 使用 concat 和 MySql 创建一个 json 数组

PHP/MySql 连接开销

Ruby 嵌套循环

java - 如何遍历字节数组列表...?

python - 需要帮助提取列数据

Mysql Select record where PRIMARY key = x

mysql - CF8 - 循环求和