[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
|