args = sys.argv[2:]
# Find the command as a function in this file
- func = globals().get(command, None)
- if func and callable(func) and command != 'main':
+ func = globals().get("command_%s" % command, None)
+ if func:
func(*args)
else:
- help()
+ command_help()
-def csvimport(engine_uri, directory='.'):
+def command_csvimport(engine_uri, directory='.'):
import csv
from sqlalchemy.orm.attributes import instrumentation_registry
try:
session.add(row)
session.flush()
- except IntegrityError as e:
+ except IntegrityError, e:
failed_rows.append(row)
# Loop over the failed rows and keep trying to insert them. If a loop
# Success!
del failed_rows[i]
do_another_loop = True
- except IntegrityError as e:
+ except IntegrityError, e:
pass
if failed_rows:
else:
print 'loaded'
-def csvexport(engine_uri, directory='.'):
+def command_csvexport(engine_uri, directory='.'):
import csv
session = connect(engine_uri)
columns = [col.name for col in table.columns]
writer.writerow(columns)
- for row in session.query(table).all():
+ primary_key = table.primary_key
+ for row in session.query(table).order_by(*primary_key).all():
csvs = []
for col in columns:
# Convert Pythony values to something more universal
writer.writerow(csvs)
-def lookup(engine_uri, name):
+def command_lookup(engine_uri, name):
# XXX don't require uri! somehow
session = connect(engine_uri)
- results = pokedex_lookup(session, name)
- print "Matched:"
- for object, matchiness in results:
- print object.__tablename__, object.name, "(%.03f)" % matchiness
+ results, exact = pokedex_lookup(session, name)
+ if exact:
+ print "Matched:"
+ else:
+ print "Fuzzy-matched:"
+
+ for object in results:
+ print object.__tablename__, object.name
-def help():
+def command_help():
print u"""pokedex -- a command-line Pokédex interface
help Displays this message.
csvexport {uri} [dir] Export data from the database given by the URI
to a set of CSVs.
Directory defaults to cwd.
-"""
+""".encode(sys.getdefaultencoding(), 'replace')
sys.exit(0)