【问题标题】:How can I load a list from an mssql table?如何从 mssql 表中加载列表?
【发布时间】:2021-09-16 21:55:39
【问题描述】:
curr = conn.cursor()
sql = """ select order# from Orders WHERE STATUS <> 'Shipped' and STATUS <> 'Not Found' and order# > '' """
curr.execute(sql)
row: List[Any] = curr.fetchall()
for x in row:
    searchInput = x
serchinput_textbox = driver.find_element_by_id("searchInput")
serchinput_textbox.send_keys(searchInput)
searchbutton = driver.find_element_by_id("searchButton")
searchbutton.click()

当我打印该行时,所有记录都在那里,但在 for 循环中它只使用最后一条记录。我不确定我是否正确创建了列表。

【问题讨论】:

  • 我不明白你为什么要尝试创建searchInput,而不是仅仅使用row?而且我也不明白(请原谅我的无知)为什么你认为searchInput 应该不同于row 的最后一个x
  • searchInput 是网站上标签的名称。我正在输入行中的信息以通过 searchInput 调用新页面。 for x in row: searchInput = x serchinput_textbox = driver.find_element_by_id("searchInput") 不管 x 正在寻找什么,这是一个网页,当您使用 For 循环时,x 不应该从行中的第一个元素开始吗?我认为这就是 For 循环所做的,从开头开始循环直到它到达结尾。
  • 是的,它将searchInput 变量设置为row 中的第一个x,然后设置为第二个,...,然后设置为最后一个。 然后它使用最后一个继续代码并调用driver.find_element_by_id等。
  • 谢谢,但我还是有点困惑。如果我执行“print(x)”,它会打印所有这些。有没有办法让它一次处理一个记录,而不仅仅是处理最后一个?
  • 是的,将您希望为每个 x inside 循环执行的代码移动。

标签: python list for-loop


【解决方案1】:

您的for 循环处理您的结果,并且除了将其分配给searchInput 变量外,对每一行都不做任何事情。您可能希望在 for 循环中添加一些代码 来处理返回的每一行。现在,在您的循环完成后,您将得到的只是 searchInput 包含结果集中的最后一行。

编辑: 尝试添加以下内容,看看您是如何丢弃除最后一行之外的所有行的:

for x in row:
    print("Here's a row to process:", x)  # Add this line
    searchInput = x

【讨论】:

  • 我应该在我发布的代码中添加更多内容。我让它从网站上提取信息,例如发货日期和接收日期。稍后我会将这些数据添加回 sql 数据库。但就目前而言,我认为它只会进入最后一条记录。我有一个浏览器,所以我可以看到它在做什么。
  • aa2 = soup.find("div", class_="text-xlarge text-semibold text-primary text-uppercase") print(aa2.text) aa3 = soup.find("div" , class_="text-large text-info") print(aa3.text) aa4 = soup.find("div", class_="text-large text-warning") print(aa4.text) aa5 = soup.find ("div", class_="text-large text-success") 打印(aa5.text)。这部分代码在for循环下。它适用于处理的最后一条记录。
猜你喜欢
  • 2018-10-15
  • 2015-09-07
  • 1970-01-01
  • 1970-01-01
  • 2011-07-31
  • 2016-12-07
  • 1970-01-01
  • 2013-08-12
  • 2017-04-29
相关资源
最近更新 更多