2016-10-18 10 views
2

私の2番目のデータフレームは値をロードしていません。なぜそれが動作していないとどんな助け?私のカーソルをリストにすると、その中にはたくさんの値が入っていますが、何らかの理由で、通常のデータフレームをパンダで2度読み込もうとすると、動作しません。2番目のデータフレームを作成できませんpandas

マイコード:

conn = pyodbc.connect(constr, autocommit=True) 
    cursor = conn.cursor() 
    secondCheckList = [] 
    checkCount = 0 
    maxValue = 0 
    strsql = "SELECT * FROM CRMCSVFILE" 
    cursor = cursor.execute(strsql) 
    cols = [] 
    SQLupdateNewIdField = "UPDATE CRMCSVFILE SET NEW_ID = ? WHERE Email_Address_Txt = ? OR TELEPHONE_NUM = ? OR DRIVER_LICENSE_NUM = ?" 
    for row in cursor.description: 
     cols.append(row[0]) 
    df = pd.DataFrame.from_records(cursor) 
    df.columns = cols 
    newIdInt = 1 
    for row in range(len(df['Email_Address_Txt'])): 
     #run initial search to figure out the max number of records. Look for email, phone, and drivers license, names have a chance not to be unique 
     SQLrecordCheck = "SELECT * FROM CRMCSVFILE WHERE Email_Address_Txt = '" + str(df['Email_Address_Txt'][row]) + "' OR TELEPHONE_NUM = '" + str(df['Telephone_Num'][row]) + "' OR DRIVER_LICENSE_NUM = '" + str(df['Driver_License_Num'][row]) + "'" 
##  print(SQLrecordCheck) 
     cursor = cursor.execute(SQLrecordCheck) 
## maxValue is indeed a list filled with records 
      maxValue =(list(cursor)) 
## THIS IS WHERE PROBLEM OCCURS 
     tempdf = pd.DataFrame.from_records(cursor) 
+0

カーソルは何を出力しますか? –

答えて

3

理由だけpd.read_sql_query(「your_query」、conn)を使用しないで、これはデータフレームとして、クエリの結果を返し、以下のコードを必要とします。また、カーソルを一番上のcursor.execute(strsql)に設定すると、forループで再度execute on cursorを呼び出そうとしていますが、execute on cursorを呼び出すことはできません。cursor = conn.cursor()再び。

+0

私はそれを知らなかった(パンダ/データベース全般)私に知らせてくれてありがとう!もし私がそれを試してみる機会を得たときに私はあなたに知らせるでしょう。 – BLang

+0

ちょうどフォローアップしたかったので、複数のクエリアを実行するために再度cursor = conn.cursor()を設定する必要はありません。 execute文は何度も使用することができます。どんな理由であれ、maxValue = list(cursor)は私のコードを混乱させる行でした。もしそれを取れば、それは完全に動作します。 – BLang

関連する問題