如何使用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 数据资源管理器中创建表和摄取映射