2017-12-28 41 views
0

私はPythonでMYSQLでテーブルを作成し、それから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(“,”)を実行コマンドの2番目のパラメータとして試してください。文字列の代わりに配列を渡すようにしてください。すべてのパラメータに同じ文字列を使用しようとしている可能性があります。列が失敗します。

また、Tinyintは-128〜127(符号付きの場合)または0〜255(符号なしの場合)の値しか保持できないとも考えます。

この列のCSVの値が大きい場合は、切り捨てられます。

もしそうなら、あなたはここで使用されるようになるだろう値に応じて必要な権利整数型チェックアウト:https://dev.mysql.com/doc/refman/5.7/en/integer-types.html

関連する問題