projects
/
zzz-pokedex.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
08ed701
)
Speed tweaks for pokedex load in SQLite
author
Petr Viktorin
<encukou@gmail.com>
Sat, 8 Jan 2011 22:21:44 +0000
(23:21 +0100)
committer
Eevee
<git@veekun.com>
Fri, 28 Jan 2011 05:51:30 +0000
(21:51 -0800)
pokedex/__init__.py
patch
|
blob
|
history
pokedex/db/load.py
patch
|
blob
|
history
diff --git
a/pokedex/__init__.py
b/pokedex/__init__.py
index
2be0f80
..
45b4d7a
100644
(file)
--- a/
pokedex/__init__.py
+++ b/
pokedex/__init__.py
@@
-137,7
+137,8
@@
def command_load(*args):
pokedex.db.load.load(session, directory=options.directory,
drop_tables=options.drop_tables,
tables=tables,
pokedex.db.load.load(session, directory=options.directory,
drop_tables=options.drop_tables,
tables=tables,
- verbose=options.verbose)
+ verbose=options.verbose,
+ safe=False)
def command_reindex(*args):
parser = get_parser(verbose=True)
def command_reindex(*args):
parser = get_parser(verbose=True)
@@
-158,7
+159,8
@@
def command_setup(*args):
session = get_session(options)
get_csv_directory(options)
pokedex.db.load.load(session, directory=None, drop_tables=True,
session = get_session(options)
get_csv_directory(options)
pokedex.db.load.load(session, directory=None, drop_tables=True,
- verbose=options.verbose)
+ verbose=options.verbose,
+ safe=False)
lookup = get_lookup(options, session=session, recreate=True)
lookup = get_lookup(options, session=session, recreate=True)
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):