2017-08-04 98 views
1
import psycopg2 
import csv 
#import operator 
import pandas as pd 
database = psycopg2.connect (database = "mydw", user="postgres",       
password="1234", host="localhost", port="5432") 
cursor = database.cursor() 
a = pd.read_csv("test.csv") 
b = pd.read_csv("test2.csv") 
print ("Read file") 
c = pd.concat([a, b], join='outer') 
c.to_csv("sorted_data.csv", index=False) 
mydata = cursor.execute(delete) 
cursor.execute("""Create Table Real.region 
     (Country varchar(55), 
     Capital varchar(55), 
     State varchar(55), 
     City varchar(55), 
     Zip varchar(55) 
     );""") 

for row in c: 
    cursor.execute("""INSERT INTO Real.region (Country, Capital, State,   
    City, Zip)"""\ 
     """VALUES (%s,%s,%s,%s,%s)""",(row,))    
cursor.close() 
database.commit() 
database.close() 

打印(「導入CSV數據」)IndexError:元組索引超出範圍巨蟒的PostgreSQL

我試圖合併2個CSV文件,並把所得到的文件中 數據庫。但我面對錯誤------

File "C:/Users/Administrator/join-col.py", line 42, in
"""VALUES (%s,%s,%s,%s,%s)""",(row,))
IndexError: tuple index out of range

請幫

+0

試着'len(row)'知道'row'中有多少物品。 –

+2

怎麼樣''「」VALUES(%s,%s,%s,%s,%s)「」「,row)',你只是傳遞一個值,否則。 – joanolo

回答

0

如果

a = pd.read_csv("test.csv") 
b = pd.read_csv("test2.csv") 
print ("Read file") 
c = pd.concat([a, b], join='outer') 

提出在C元組的列表(您可以通過在打印確認) ,那麼你應該只需要改變這個

cursor.execute("""INSERT INTO Real.region (Country, Capital, State,   
City, Zip)"""\ 
    """VALUES (%s,%s,%s,%s,%s)""",(row,)) 

這個

cursor.execute("""INSERT INTO Real.region (Country, Capital, State,   
City, Zip)"""\ 
    """VALUES (%s,%s,%s,%s,%s)""",row) 

問題是row已經是一個元組。通過做(row,),你正在創造一個tulpe,只有一個元素,這是row本身。 這也是爲什麼你會得到一個IndexError

+0

非常感謝..........這是一個愚蠢的錯誤..... – Neepa

相關問題