CSV import now respects NULLability of columns.

Empty strings loaded into NULL columns are changed to NULL instead.
This commit is contained in:
Eevee 2009-03-08 21:34:48 -04:00
parent 20c9c23f51
commit ac325b620d

View file

@ -43,14 +43,20 @@ def csvimport(engine_uri, dir='.'):
print table_name print table_name
reader = csv.reader(open("%s/%s.csv" % (dir, table_name), 'rb'), lineterminator='\n') reader = csv.reader(open("%s/%s.csv" % (dir, table_name), 'rb'), lineterminator='\n')
columns = [unicode(column) for column in reader.next()] column_names = [unicode(column) for column in reader.next()]
for csvs in reader: for csvs in reader:
row = table() row = table()
for column, value in zip(columns, csvs): for column_name, value in zip(column_names, csvs):
value = value.decode('utf-8') if table.__table__.c[column_name].nullable and value == '':
setattr(row, column, value) # Empty string in a nullable column really means NULL
value = None
else:
# Otherwise, unflatten from bytes
value = value.decode('utf-8')
setattr(row, column_name, value)
session.add(row) session.add(row)