[SQLObject] Re: unknown column table creation..novice
SQLObject is a Python ORM.
Brought to you by:
ianbicking,
phd
From: Brian R. <br...@se...> - 2004-08-19 16:06:12
|
> From: "Philippe Normand" <sw...@fr...> > > >>> >>> rows = zip(headers,cell) >>> line_item = MailList.new(*rows) >>> >> >> Try: >> >> MailList.new(**rows) >> > > Woops, this won't work i think, you have to build a dictionnary to be > able to use **. So: > > rows = dict(zip(headers,cell)) > line_item = MailList.new(**rows) > > Works like a charm. Thanks Ian and Philippe! Complete code for csv2sql.py: #!/usr/bin/env python """ $Id: csv2sql.py,v 1.1 2004/08/19 16:02:37 brian Exp $ Quick conversion script of any CSV to any SQLObject support database Brian Ray """ from SQLObject import * import csv __connection__ = SQLiteConnection('../USERDATA/1/mailist.sqlite') data_file = "../USERDATA/QM_sample_job/sample.csv" data_sample = file(data_file).read(8192) dialect = csv.Sniffer().sniff(data_sample) data = csv.reader(file(data_file),dialect) headers = [] row_num = 0 for row in data: row_num += 1 if row_num == 1: for cell in row: headers.append(cell) try: class MailList(SQLObject): pass for header in headers: MailList.addColumn(Col(name=header)) MailList.createTable() print MailList._table+" Created." except: print MailList._table+" Skipped already exists or error." else: rows = dict(zip(headers,row)) line_item = MailList.new(**rows) print "Done: "+str(row_num-1)+" converted" # Please let me know if this has issues |