Browse Source

v.unpack: fix when default DB connection is not set

git-svn-id: https://svn.osgeo.org/grass/grass/trunk@62452 15284696-431f-4ddb-bdfa-cd5b030d7da7
Martin Landa 10 years ago
parent
commit
9197543eb8
2 changed files with 12 additions and 4 deletions
  1. 11 3
      lib/python/script/db.py
  2. 1 1
      scripts/v.unpack/v.unpack.py

+ 11 - 3
lib/python/script/db.py

@@ -89,17 +89,25 @@ def db_table_exist(table, **args):
     return False
 
 
-def db_connection():
+def db_connection(force=False):
     """Return the current database connection parameters
     (interface to `db.connect -g`). Example:
 
     >>> db_connection()
     {'group': '', 'schema': '', 'driver': 'sqlite', 'database': '$GISDBASE/$LOCATION_NAME/$MAPSET/sqlite/sqlite.db'}
 
+    :param force True to set up default DB connection if not defined
+
     :return: parsed output of db.connect
     """
-    return parse_command('db.connect', flags='g')
-
+    nuldev = file(os.devnull, 'w')
+    conn = parse_command('db.connect', flags='g', stderr=nuldev)
+    nuldev.close()
+    if not conn and force:
+        run_command('db.connect', flags='c')
+        conn = parse_command('db.connect', flags='g')
+    
+    return conn
 
 def db_select(sql=None, filename=None, table=None, **args):
     """Perform SQL select statement

+ 1 - 1
scripts/v.unpack/v.unpack.py

@@ -139,7 +139,7 @@ def main():
     # exist fromdb
     if os.path.exists(fromdb):
         # the db connection in the output mapset
-        dbconn = grassdb.db_connection()
+        dbconn = grassdb.db_connection(force=True)
         todb = dbconn['database']
         # return all tables
         list_fromtable = grass.read_command('db.tables', driver='sqlite',