如何使用python在mysql中创建表和导入数据

问题描述 投票:0回答:1

我想用python在MYSQL中创建一个表,然后将数据从csv导入到该表中。我创建表的代码是:

    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'的数据被截断”。

如果你帮助我,将不胜感激。谢谢

python mysql csv insert python-import
1个回答
0
投票

尝试将row.split(“,”)作为执行命令的第二个参数,因此您可以传递一个数组而不是一个字符串,因为它可能会尝试对所有参数使用相同的字符串,当它到达第一个非文本列时它会失败。

还要考虑Tinyint只能保存-128到127(如果有符号)或0到255(如果是无符号)的值。

如果列的CSV值更大,则它也会被截断。

如果是这样,请根据您将要使用的值检查所需的正确整数类型:https://dev.mysql.com/doc/refman/5.7/en/integer-types.html

© www.soinside.com 2019 - 2024. All rights reserved.