2017-12-28 44 views
0

MySQL을 사용하여 Python으로 테이블을 만든 다음 CSV에서 데이터를 가져 오려고합니다. 테이블을 작성하는 코드는 다음과 같습니다.Python을 사용하여 mysql에서 테이블 및 가져 오기 데이터를 만드는 방법

sqlcmd="CREATE TABLE IF NOT EXISTS PA_TEST_CREDITS(`Identifier` TINYTEXT,`Test_Name` TINYTEXT,`Test_Component_Code` TINYTEXT,`Test_Component` TINYTEXT,`Test_Score` TINYINT,`Course_Prefix` TINYTEXT,`Course_Number` TINYTEXT,`Course_Title` TINYTEXT,`EARN_CREDIT` TINYTEXT,`Earned_Credit_Flag` TINYINT)" 
cursor.execute(sqlcmd) 
rconn.commit() 

이 코드는 테이블을 생성합니다. 데이터를 가져 오기 위해이 코드를 사용했습니다 :

import csv 
with open('PA_TEST_CREDITS.csv') as csvfile: 
    csv_data=csv.reader(csvfile) 
    for row in csv_data: 
     cursor.execute("INSERT INTO PA_TEST_CREDITS(Identifier, Test Name, Test Component Code, Test Component, Test Score, Course Prefix, Course Number, Course Title,EARN_CREDIT,Earned Credit Flag) VALUES(%s, %s, %s, %s, %s, %s, %s, %s, %s, %s)", row) 

오류는 "데이터는 행 1에서 열 'Test_score'에 대한립니다"입니다.

나를 도와 주시면 감사하겠습니다. 덕분에

+1

당신은 당신의 Tinytext CSV 파일에서 데이터를 저장하기에 충분히 큰 있는지 확인 있습니까? tinytext는 최대 255 자까지 저장할 수 있습니다. –

답변

0

row.split(“,”)을 실행 명령의 두 번째 매개 변수로 사용하여 모든 매개 변수에 대해 동일한 문자열을 사용하려고 시도했을 수 있으므로 문자열 대신 배열을 전달하고 첫 번째 비 텍스트 열이 실패합니다.

또한 Tinyint는 -128에서 127 (부호가있는 경우) 또는 0에서 255 (부호없는 경우)의 값만 보유 할 수 있다고 생각하십시오.

열에 해당 CSV 값이 더 큰 경우 잘릴 수도 있습니다.

그렇다면, 당신은 당신이 가고있는 값에 따라 필요로하는 적절한 정수 유형을 확인하려면 여기를 사용하는 : https://dev.mysql.com/doc/refman/5.7/en/integer-types.html