projects
/
zzz-pokedex.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Use a class + mapper instead of dynamic declarative magic
[zzz-pokedex.git]
/
pokedex
/
db
/
load.py
diff --git
a/pokedex/db/load.py
b/pokedex/db/load.py
index
df0d0f1
..
e6b3287
100644
(file)
--- a/
pokedex/db/load.py
+++ b/
pokedex/db/load.py
@@
-95,7
+95,7
@@
def _get_verbose_prints(verbose):
return print_start, print_status, print_done
return print_start, print_status, print_done
-def load(session, tables=[], directory=None, drop_tables=False, verbose=False):
+def load(session, tables=[], directory=None, drop_tables=False, verbose=False
, safe=True
):
"""Load data from CSV files into the given database session.
Tables are created automatically.
"""Load data from CSV files into the given database session.
Tables are created automatically.
@@
-115,6
+115,10
@@
def load(session, tables=[], directory=None, drop_tables=False, verbose=False):
`verbose`
If set to True, status messages will be printed to stdout.
`verbose`
If set to True, status messages will be printed to stdout.
+
+ `safe`
+ If set to False, load can be faster, but can corrupt the database if
+ it crashes or is interrupted.
"""
# First take care of verbosity
"""
# First take care of verbosity
@@
-128,6
+132,10
@@
def load(session, tables=[], directory=None, drop_tables=False, verbose=False):
table_objs = [metadata.tables[name] for name in table_names]
table_objs = sqlalchemy.sql.util.sort_tables(table_objs)
table_objs = [metadata.tables[name] for name in table_names]
table_objs = sqlalchemy.sql.util.sort_tables(table_objs)
+ # SQLite speed tweaks
+ if not safe and session.connection().dialect.name == 'sqlite':
+ session.connection().execute("PRAGMA synchronous=OFF")
+ session.connection().execute("PRAGMA journal_mode=OFF")
# Drop all tables if requested
if drop_tables:
# Drop all tables if requested
if drop_tables:
@@
-251,6
+259,10
@@
def load(session, tables=[], directory=None, drop_tables=False, verbose=False):
print_done()
print_done()
+ # SQLite check
+ if session.connection().dialect.name == 'sqlite':
+ session.connection().execute("PRAGMA integrity_check")
+
def dump(session, tables=[], directory=None, verbose=False):
def dump(session, tables=[], directory=None, verbose=False):