2010-05-18 15 views

Odpowiedz

7

Można wstawić na jeden strzał za pomocą polecenia executemany zamiast wkładając jeden po drugim

Powiedzmy mam users.csv z następujących zawartości

"Hugo","Boss" 
"Calvin","Klein" 

iw zasadzie otwartych z modułem csv i przekazać je do .executemany funkcja

import csv,sqlite3 

persons= csv.reader(open("users.csv")) 
con = sqlite3.connect(":memory:") 

con.execute("create table person(firstname, lastname)") 
con.executemany("insert into person(firstname, lastname) values (?, ?)", persons) 

for row in con.execute("select firstname, lastname from person"): 
    print row 

#(u'Hugo', u'Boss') 
#(u'Calvin', u'Klein') 
+0

dziękuję, S.Mark. jest bardzo przydatny. wygląda na to, że nie ma funkcji podobnej do ".import"? – user343638

+0

@cyaos: nie ma. Nawiasem mówiąc, pytanie jest bardzo popularne w SO, na przykład: http://stackoverflow.com/questions/2346074/execute-sqlite3-dot-commands-od-python-or-register-collation-in-command-line Jeszcze jedną rzeczą, którą powinieneś wiedzieć, jest to, że '.import' w CLI jest raczej prymitywny: po prostu dzieli się na separatorze i zawiedzie, gdy dane zawierają separator, gdy cytowana jest odpowiednia wartość. – newtover