2017-06-19 416 views
0

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

预期输出: 运行在一个循环,会问我一个新的表名,然后运行该代码,并问了我和另一个表名或完成工作的代码。

这实际上与

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
  • SHEETNAME:Indexes1
  • A柱:表名
  • B列:IndexName

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

回答

0

找出我自己的问题。我有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): ")