繁体   English   中英

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

[英]How to create table and import data in mysql with python

我想用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”列的数据被截断”。

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

尝试将row.split(“,”)作为您的execute命令的第二个参数,因此您传递了一个数组而不是字符串,因为它可能正在尝试对所有参数使用相同的字符串,并且当它到达第一个非字符串时-text列失败。

还请注意,Tinyint仅能保存-128至127(如果有符号)或0至255(如果无符号)的值。

如果该列的CSV值较大,则该字段也会被截断。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM