【问题标题】:While loop with a nested for loop带有嵌套 for 循环的 While 循环
【发布时间】:2017-06-20 02:40:08
【问题描述】:

大家好,我正在尝试在 for 循环中创建一个 while 循环。该代码将为我生成一堆 SQL Drop 索引语句,因此除了表名之外我无需输入任何内容。 excel 文件将包含完成 Drop Index 语句所需的所有信息。这将节省我几个小时的打字时间。

预期输出: 运行在循环中工作的代码,它将询问我一个新的表名,然后运行代码并询问我另一个表名或完成。

这是实际使用的代码

from openpyxl import load_workbook
wb = load_workbook(filename='UnusedIndexes.xlsx')
ws = wb['Indexes1']

ws.cell(row=2, column=2)
ws.cell(row=2, column=2).value
tablename = input("What Table Do you Want: ")

for i in range(1,200,1):
    if ws.cell(row=i, column=1).value == tablename:
        print("IF EXISTS (SELECT * FROM sys.indexes WHERE NAME = N'[", ws.cell(row = i, column = 2).value, "]')\nDROP INDEX [" + ws.cell(row = i, column = 2).value + "] ON "
                 + "[dbo].[" + tablename +  "]\nGO\n" )

这是我正在使用的代码,试图让 while 循环正常工作。

from openpyxl import load_workbook
wb = load_workbook(filename='UnusedIndexes.xlsx')
ws = wb['Indexes1']

ws.cell(row=2, column=2)
ws.cell(row=2, column=2).value
tablename = input("What Table Do you Want: ")
finished = 'n'

while finished == 'n':
    for i in range(1,200,1):
        if ws.cell(row=i, column=1).value == tablename:
            print("IF EXISTS (SELECT * FROM sys.indexes WHERE NAME = N'[", ws.cell(row = i, column = 2).value, "]')\nDROP INDEX [" + ws.cell(row = i, column = 2).value + "] ON "
                     + "[dbo].[" + tablename +  "]\nGO\n" )
        else:
            finished = input("Would you like to enter a new tablename(y/n): ")
        if finished == 'y':
            break

Excel 文件格式

  • Excel 文件名:UnusedIndexes.xlsx
  • 工作表名称:索引1
  • A 列:表名
  • B 列:索引名称

您可以在 A 中使用任何文本(字符串)值并成为。只需要在 For 循环中保留 Print 语句的功能

【问题讨论】:

    标签: python-3.x while-loop


    【解决方案1】:

    想出了我自己的问题。我的while循环有点傻。如果有人感兴趣,这里是完整的代码。

    from openpyxl import load_workbook
    wb = load_workbook(filename='UnusedIndexes.xlsx')
    ws = wb['Indexes1']
    
    ws.cell(row=2, column=2)
    ws.cell(row=2, column=2).value
    finished = 'y'
    
    while finished != 'n':
        tablename = input("Enter a tablename for the indexes: ")
        print("This is the tablename: " + tablename)
        for i in range(1, 200, 1):
            if ws.cell(row=i, column=1).value == tablename:
                print("IF EXISTS (SELECT * FROM sys.indexes WHERE NAME = N'[", ws.cell(row=i, column=2).value, "]')\nDROP INDEX ["
                    + ws.cell(row=i, column=2).value + "] ON " + "[dbo].[" + tablename + "]\nGO\n")
        finished = input("Would you like to do another table(y/n): ")
    

    【讨论】:

      猜你喜欢
      • 2021-08-21
      • 2020-12-30
      • 2013-10-26
      • 1970-01-01
      • 2023-03-02
      • 2020-10-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多