我是python的新手,一般编程,并尝试读取.dat文件并将数据插入postgres表。
我收到了一个错误,我用Google搜索但无法提出解决方案。希望有人能指出我正确的方向。
评级表:
UserID int
MovieID int
Rating float
Ratings.dat:
1::122::5::838985046
1::185::5::838983525
以下是我的代码:
import psycopg2
ratingsfile = open('ml-10M100K/ratings.dat', 'r')
for line in ratingsfile:
items = line.split('::')
for values in items:
curr.execute("INSERT INTO Ratings(UserID, MovieID, Rating)
VALUES (%s, %s, %s)", values)
conn.commit()
ratingsfile.close()
错误:
curr.execute("INSERT INTO Ratings(UserID, MovieID, Rating)
VALUES (%s, %s, %s)", values)
IndexError: string index out of range
你不需要遍历items
。相反,您可以将3个%s
变量指定为items[index]
,如下所示:
import psycopg2
ratingsfile = open('ml-10M100K/ratings.dat', 'r')
for line in ratingsfile:
items = line.split('::')
curr.execute("INSERT INTO Ratings(UserID, MovieID, Rating) VALUES (%s, %s, %s)" % (items[0], items[1], items[2]))
conn.commit()
ratingsfile.close()
这假定,例如在您的示例Ratings.dat中,UserID为1(items[0]
),MovieID为122和185(items[1]
),而Rating为5(items[2]
)。可以使用items[3]
访问每行末尾的9位整数