[1,2,3]
#!/usr/bin/python3.5
import psycopg2, csv
#create a connection object
conn = psycopg2.connect("dbname='testdb' user='postgres' host='localhost' password='password'")
#use cursor object to execute commands
cur= conn.cursor()
reader = csv.reader(open('E:\\data\\sample.csv', 'r'))
for row in reader:
print (row[1])
cur.execute('INSERT INTO "data" ("VehicleNo", "DepartureDate", "DepartureCity", "SeatNumber", "UCI", "PAXSurname", "FirstName", "PNRNumber", "Ticket", "FQTVNumber", "PassportNo", "PassportExpDate")' +
'VALUES %s', [(val1,val2,val3,val4,val5,val6,val7,val8,val9,val10,val11,val12)])
conn.commit()
cur.close()
我是新手,&我正在使用python 3.5我想使用psycopg2将CSV文件中的数据插入到PostgreSQL表中。
回溯(最近一次调用最后一次):文件“E:\ Shared Folder Home \ Python \ Python3 \ postgressqlCSV.py”,第23行,在'VALUES%s'中,[(val1,val2,val3,val4,val5) ,val6,val7,val8,val9,val10,val11,val12)])NameError:名称'val1'未定义
当我使用下面显示的python代码时,我遇到了上述错误
有人可以帮我解决这个问题。我已经插入了我的CSV文件样本。非常感谢你的时间和努力。
答案 0 :(得分:0)
信息很清楚。您没有定义val1
。将每行中的字符串列表转换为元组。使用Psycopg2的execute
方法参数传递。您不希望第一个标题行。
表示i,列枚举(读者): 打印(i,行) 如果我== 0:继续
cursor.execute('''
INSERT INTO data (
VehicleNo, DepartureDate, DepartureCity, SeatNumber, UCI,
PAXSurname, FirstName, PNRNumber, Ticket, FQTVNumber,
PassportNo, PassportExpDate
) values %s''', [tuple(row)]
)
BTW双引号标识符是一个坏主意。