2013-02-18 59 views
2

我有一個包含20列和100行的CSV文件。我想創建一個使用兩列的SQLite數據庫 - 第1列中的日期和第10列中的溫度。我修改了我找到的一些示例代碼,但不知道如何才能使用這兩列。只從CSV中導入兩列

import csv, sqlite3 
import sys 

filename = sys.argv[-1] 

con = sqlite3.connect("my.db") 
con.execute("create table stats(date, temperature)")        
cur = con.cursor() 

stats = csv.reader(open(filename)) 

con.executemany("insert into stats(date, temperature) values (?, ?)", stats) 

con.commit() 

回答

1
con.executemany("insert into stats(date, temperature) values (?, ?)", 
       ((rec[0], rec[9]) for rec in stats)) 
+0

這工作。非常感謝你! – woollybrain 2013-02-18 10:24:41

1

您可以使用pandas只讀指定列並將其寫入一個DB

import sqlite3 
from pandas.io import sql 
import pandas as pd 
from StringIO import StringIO 

s = """Year,Make,Model 
1997,Ford,E350 
2000,Mercury,Cougar""" 

f = StringIO(s) 
df = pd.read_csv(f, usecols = ['Year','Model']) # reads specified cols 
               # to a DataFrame 

con = sqlite3.connect(':memory:') 
sql.write_frame(df, name='test', con=con) 

print sql.read_frame('select * from test', con) # reads data back 
               # to DataFrame 

出來:

Year Model 
0 1997 E350 
1 2000 Cougar