2017-06-19 23 views
0

こんにちはすべてforループでwhileループを作成しようとしています。コードは私のためにSQLドロップインデックスステートメントの束を生成するので、テーブル名以外は何も入力する必要はありません。 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:インデックス名

あなたはAの任意のテキスト(文字列)値を使用できます。 ForループのPrintステートメントの機能を維持するだけです

答えて

0

私自身の問題を解明しました。私は少しループした。もし誰かが興味を持っていれば、完成したコードがここにあります。

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): ")