Fixed CSV import's handling of Boolean columns.

This commit is contained in:
Eevee 2009-03-25 20:43:09 -04:00
parent 15eae9ed6c
commit 85ee27dedd

View file

@ -1,6 +1,8 @@
# encoding: utf8 # encoding: utf8
import sys import sys
import sqlalchemy.types
from .db import connect, metadata from .db import connect, metadata
def main(): def main():
@ -49,9 +51,17 @@ def csvimport(engine_uri, dir='.'):
row = table() row = table()
for column_name, value in zip(column_names, csvs): for column_name, value in zip(column_names, csvs):
if table.__table__.c[column_name].nullable and value == '': column = table.__table__.c[column_name]
if column.nullable and value == '':
# Empty string in a nullable column really means NULL # Empty string in a nullable column really means NULL
value = None value = None
elif isinstance(column.type, sqlalchemy.types.Boolean):
# Boolean values are stored as string values 0/1, but both
# of those evaluate as true; SQLA wants True/False
if value == '0':
value = False
else:
value = True
else: else:
# Otherwise, unflatten from bytes # Otherwise, unflatten from bytes
value = value.decode('utf-8') value = value.decode('utf-8')