2017-05-07 18 views
0

私はSQLクエリでパイプ区切りのテキストファイルを持っています。ループして各クエリを実行しようとしています。私がループ内のファイルにクエリを出力すると、すべてうまく見えます。私はテキストをコピーし、SSMSで実行した場合、SQLは細かい動作しますが、私はpyodbcで実行しようとすると、私はエラーを取得する:ここでテキストファイルのSQLクエリをループして実行する - pyodbc

ProgrammingError: No results. Previous SQL was not a query. 

は私のコードは次のとおりです。

with open('C:/users/a/tria_file_by_ASLOB12.csv', 'r') as queryFile: 
    for line in queryFile: 
     fields = line.split('|') 
     print fields[0] 
     #cursor.execute(fields[0]) 
     #cursor.fetchall() 

戻り値:

SELECT COUNT(DISTINCT(pol_num)) In_Force_Count, sum(lmt_pol_s) Exposure 

      FROM bapu.dbo.fact_prem 

      WHERE aslob = 90 

      and CONCAT(2016,1231) between CAST(d_pol_eff AS DATE) and CAST(d_pol_exp AS DATE) 

      and cvg_state = 'WA' 

      and rpt_co_name in (SELECT Ent_Name FROM NAIC_Legal_Ent_Lookup WHERE ID = 40045) 


SELECT COUNT(DISTINCT(pol_num)) In_Force_Count, sum(lmt_pol_s) Exposure 

      FROM bapu.dbo.fact_prem 

      WHERE aslob = 90 

      and CONCAT(2016,1231) between CAST(d_pol_eff AS DATE) and CAST(d_pol_exp AS DATE) 

      and cvg_state = 'WI' 

      and rpt_co_name in (SELECT Ent_Name FROM NAIC_Legal_Ent_Lookup WHERE ID = 40045) 

など

私は何をしないのですか?

ありがとうございました

+0

あなたは 'fields [0]'の種類は何ですか? –

+0

私は 'pyodbc execute multiple statements'という基準を使って検索しました。返される最初の結果はhttp://stackoverflow.com/questions/38856534/execute-sql-file-with-multiple-statements-separated-by-using-pyodbcでした。私はそれを望むか、他の人の助けになる。 – toonice

答えて

0

私はそれを理解しました。クエリを実行してから、cursor.fetchall()の結果をループする必要がありました。ここに私のコードです:

row_iterator = df.iterrows() 
_, last = row_iterator.next() # take first item from row_iterator 
resultFile = open('C:\\Users\\pathtofile\\file.csv', 'w') 

for i, row in row_iterator: 
    row1 = (int(row['LEGAL_ENTITY']), int(row['CY_YE']), 
int(row['TRIP_ASLOB']), row['CVG_ST'], int(row['Row'])) 
    row2 = (last['LEGAL_ENTITY'], last['CY_YE'], last['TRIP_ASLOB'], 
last['CVG_ST'], int(row['Row'])) 
    last = row 
    data = row1 
    query= """SELECT COUNT(DISTINCT(pol_num)) In_Force_Count, 
sum(distinct(lmt_pol_s)) Exposure 
       FROM bapu.dbo.xxx 
       WHERE aslob = {} 
       and CONCAT({},1231) between CAST(d_pol_eff AS DATE) and 
CAST(d_pol_exp AS DATE) 
       and cvg_state = '{}' 
       and rpt_co_name in (SELECT Ent_Name FROM NAIC_Legal_Ent_Lookup 
WHERE ID = {}) 
       and (cvg_desc = 'tria' or cvg_desc like '%terrorism%') 
       """.format(data[2],data[1],data[3], data[0]) 
    cursor.execute(query) 
    for row in cursor.fetchall(): 
     resultFile.write("{} {} {} {} {} {} {} \n".format(row[0], row[1], 
data[2], data[1], data[3], data[0], data[4])) 
     print row[0], row[1], data[2], data[1], data[3], data[0], data[4] 
関連する問題