mirror of
https://github.com/veekun/pokedex.git
synced 2024-08-20 18:16:34 +00:00
Fixed CSV import's handling of Boolean columns.
This commit is contained in:
parent
15eae9ed6c
commit
85ee27dedd
1 changed files with 11 additions and 1 deletions
|
@ -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')
|
||||||
|
|
Loading…
Reference in a new issue