Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/364.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Python将.csv文件导入SQLite表时指定数据类型的有效方法?_Python_Mysql_Sqlite_Csv - Fatal编程技术网

使用Python将.csv文件导入SQLite表时指定数据类型的有效方法?

使用Python将.csv文件导入SQLite表时指定数据类型的有效方法?,python,mysql,sqlite,csv,Python,Mysql,Sqlite,Csv,我正在将带有标题的.csv文件中的数据导入到SQLite表中。这当然很容易做到,我可以简单地做到以下几点: sqlite> .separator "," sqlite> .import 2015.csv tennisresults2015 但是,如果我这样做,那么所有列都默认为“TEXT”数据类型。相反,我希望我的数值字段默认为“整型”或“实型”数据类型,这两种类型都是合适的 现在我意识到,当我通过以下代码行创建表时,我可以在Python中显式定义每一列: conn = sqlit

我正在将带有标题的.csv文件中的数据导入到SQLite表中。这当然很容易做到,我可以简单地做到以下几点:

sqlite> .separator ","
sqlite> .import 2015.csv tennisresults2015
但是,如果我这样做,那么所有列都默认为“TEXT”数据类型。相反,我希望我的数值字段默认为“整型”或“实型”数据类型,这两种类型都是合适的

现在我意识到,当我通过以下代码行创建表时,我可以在Python中显式定义每一列:

conn = sqlite3.connect('tennisresults.db') #connection
c = conn.cursor()  #get a cursor object, all SQL commands are processed by it            
c.execute('CREATE TABLE tennisresults2015(ATP INTEGER, Location TEXT, Tournament TEXT)') #etc
但是,此.csv文件有很多列,从文件的前两行可以看出,如下所示:

ATP,Location,Tournament,Date,Series,Court,Surface,Round,Best of,Winner,Loser,WRank,LRank,WPts,LPts,W1,L1,W2,L2,W3,L3,W4,L4,W5,L5,Wsets,Lsets,Comment,B365W,B365L,EXW,EXL,LBW,LBL,PSW,PSL,MaxW,MaxL,AvgW,AvgL
1,Brisbane,Brisbane International,01/05/2015,ATP250,Outdoor,Hard,1st Round,3,Duckworth J.,Simon G.,125,21,430,1730,6,2,6,2,,,,,,,2,0,Completed,4.5,1.18,4.3,1.2,4.33,1.2,4.67,1.23,4.73,1.23,4.31,1.2

我想知道是否有一种更有效的方法来代替我在Python中手动指定每个字段名和数据类型?

遗憾的是,我认为答案是否定的,没有内置的方法来完成您的要求。您需要:

  • 显式使用create语句,如问题中包含的语句
  • 或者,在csv文件中包含数据类型,并编写您自己的解析机制来读取它们并将它们从实际导入中排除(您需要自己执行,而不是使用内置导入)

    • 遗憾的是,我认为答案是否定的,没有内在的方式来满足你的要求。您需要:

      • 显式使用create语句,如问题中包含的语句
      • 或者,在csv文件中包含数据类型,并编写您自己的解析机制来读取它们并将它们从实际导入中排除(您需要自己执行,而不是使用内置导入)

      您可以从文件中读取列名。是的,我可以。但是我仍然需要在Python中指定数据类型。是否可以在my.csv文件中添加一行(在列标题行下方,但在第一个数据行上方),并在每列中添加数据类型,然后直接从文件中读取这两行?如果是这样的话,我该怎么做?你明白了吗?如果是,请发布一个答案。(我真的可以用它。)你可以从文件中读取列名。是的,我可以。但是我仍然需要在Python中指定数据类型。是否可以在my.csv文件中添加一行(在列标题行下方,但在第一个数据行上方),并在每列中添加数据类型,然后直接从文件中读取这两行?如果是这样的话,我该怎么做?你明白了吗?如果是,请发布一个答案。(我真的可以用。)