mirror of
https://github.com/veekun/pokedex.git
synced 2024-08-20 18:16:34 +00:00
Fix the CLI in py3
This commit is contained in:
parent
17999c5b1a
commit
0ff24b4dc8
3 changed files with 22 additions and 13 deletions
pokedex/db
|
@ -3,9 +3,11 @@ from __future__ import print_function
|
|||
|
||||
import csv
|
||||
import fnmatch
|
||||
import io
|
||||
import os.path
|
||||
import sys
|
||||
|
||||
import six
|
||||
import sqlalchemy.sql.util
|
||||
import sqlalchemy.types
|
||||
|
||||
|
@ -196,16 +198,20 @@ def load(session, tables=[], directory=None, drop_tables=False, verbose=False, s
|
|||
|
||||
try:
|
||||
csvpath = "%s/%s.csv" % (directory, table_name)
|
||||
csvfile = open(csvpath, 'rb')
|
||||
csvfile = open(csvpath, 'r')
|
||||
except IOError:
|
||||
# File doesn't exist; don't load anything!
|
||||
print_done('missing?')
|
||||
continue
|
||||
|
||||
csvsize = os.stat(csvpath).st_size
|
||||
# XXX This is wrong for files with multi-line fields, but Python 3
|
||||
# doesn't allow .tell() on a file that's currently being iterated
|
||||
# (because the result is completely bogus). Oh well.
|
||||
csvsize = sum(1 for line in csvfile)
|
||||
csvfile.seek(0)
|
||||
|
||||
reader = csv.reader(csvfile, lineterminator='\n')
|
||||
column_names = [unicode(column) for column in reader.next()]
|
||||
column_names = [six.text_type(column) for column in next(reader)]
|
||||
|
||||
if not safe and engine.dialect.name == 'postgresql':
|
||||
# Postgres' CSV dialect works with our data, if we mark the not-null
|
||||
|
@ -253,10 +259,12 @@ def load(session, tables=[], directory=None, drop_tables=False, verbose=False, s
|
|||
session.commit()
|
||||
new_rows[:] = []
|
||||
|
||||
progress = "%d%%" % (100 * csvfile.tell() // csvsize)
|
||||
progress = "%d%%" % (100 * csvpos // csvsize)
|
||||
print_status(progress)
|
||||
|
||||
csvpos = 0
|
||||
for csvs in reader:
|
||||
csvpos += 1
|
||||
row_data = {}
|
||||
|
||||
for column_name, value in zip(column_names, csvs):
|
||||
|
@ -271,7 +279,7 @@ def load(session, tables=[], directory=None, drop_tables=False, verbose=False, s
|
|||
value = False
|
||||
else:
|
||||
value = True
|
||||
else:
|
||||
elif isinstance(value, bytes):
|
||||
# Otherwise, unflatten from bytes
|
||||
value = value.decode('utf-8')
|
||||
|
||||
|
@ -394,7 +402,7 @@ def dump(session, tables=[], directory=None, verbose=False, langs=None):
|
|||
else:
|
||||
filename = '%s/%s.csv' % (directory, table_name)
|
||||
|
||||
writer = csv.writer(open(filename, 'wb'), lineterminator='\n')
|
||||
writer = csv.writer(io.open(filename, 'w', newline=''), lineterminator='\n')
|
||||
|
||||
columns = [col.name for col in table.columns]
|
||||
|
||||
|
@ -434,7 +442,7 @@ def dump(session, tables=[], directory=None, verbose=False, langs=None):
|
|||
elif val == False:
|
||||
val = '0'
|
||||
else:
|
||||
val = unicode(val).encode('utf-8')
|
||||
val = six.text_type(val).encode('utf-8')
|
||||
|
||||
csvs.append(val)
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue