공급해야하는 고유 ID가있는 csv 파일에서 sqlite3에 테이블을 생성합니다. 나는 그것을 db와 그 complete를 만드는 곳으로 가지고있다. 동일한 고유 ID 값을 가진 다른 CSV 파일을 가져 오려고하지만 db에 적용하려는 정보가 추가되었습니다.고유 값의 Sqlite 업데이트 행
내가 추가하고자하는 csv 파일은 db의 많은 행에만 적용됩니다. 오전 범위의
Traceback (most recent call last):
File "test.py", line 62, in <module>
update_teams(x[0], x[2])
IndexError: list index out of range
에서리스트 인덱스 I이 sqlite.db하는 CSV에 행의 같은 양이 없기 때문에 점점 : IndexError : 나는 오류는 무엇입니까?
CSV 형식 :
Id,PlayerName,TeamName
641393,John Doe1,Team1
663844,John Doe2,Team1
607469,John Doe3,Team1
내 코드 : 모든 입력이 크게 감사합니다
import csv
import sqlite3
# connect to sqlite database
conn = sqlite3.connect('players.db')
c = conn.cursor()
# table values
table_spec = """CREATE TABLE IF NOT EXISTS players(
player_id INTEGER UNIQUE,
name_last TEXT,
name_first TEXT,
TeamName TEXT);"""
# Create Table
def create_table():
c.execute(table_spec)
# Takes values and inserts them into the table
def write_core_data(player_id, name_last, name_first):
c.execute('INSERT OR IGNORE
INTO players ("player_id","name_last","name_first")
VALUES (?,?,?)', (player_id,name_last, name_first))
conn.commit()
def update_teams(player_id, TeamName):
c.execute('UPDATE players
SET TeamName=?
WHERE player_id=?',(TeamName, player_id))
conn.commit()
# create_table()
with open('players_master.csv') as csvfile:
readCSV = csv.reader(csvfile, delimiter=',')
for x in readCSV:
write_core_data(x[0], x[1], x[2])
print(x[0])
with open('team_list.csv') as teamlist:
readCSV = csv.reader(teamlist, delimiter=',')
for x in readCSV:
update_teams(x[0], x[2])
print("Added team {} to {}".format(x[2], x[1]))
c.close()
conn.close()
. 고맙습니다.
그럼 얼마나 큰 이러한 CSV 파일은? MBs? GBs? –
질문 해 주셔서 감사합니다. db 파일은 6,793KB이고 csv 파일은 334KB입니다. 그래서 그들은 정말로 작지만 행의 양이 다르므로 생각했습니다. –
SQLite (및 대부분의 데이터베이스)는 이러한 방식으로 작동하지 않습니다. 소량의 데이터가 없어도 행이 부족하지는 않습니다. 문제가 발생한 코드의 정확한 위치를 강조 할 수 있습니까? –