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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何使用python在mysql中创建表和导入数据相关的知识,希望对你有一定的参考价值。

我想用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(“,”)作为执行命令的第二个参数,因此您可以传递一个数组而不是一个字符串,因为它可能会尝试对所有参数使用相同的字符串,当它到达第一个非文本列时它会失败。

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

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

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

以上是关于如何使用python在mysql中创建表和导入数据的主要内容,如果未能解决你的问题,请参考以下文章

如何在 MariaDb 中创建表并将数据导入 sql? [复制]

如何通过 PowerShell 或 ARM 模板在 Azure 数据资源管理器中创建表和摄取映射

创建一个 MYSQL 存储过程以在不同的数据库中创建表

无法使用 JPA 在 H2 中创建表和加载数据

Python数据库操作 Mysql数据库导入导出和授权#学习猿地

大数据--sqoop数据导入导出