Explorar o código

v.unpack: fix when default DB connection is not set
(merge https://trac.osgeo.org/grass/changeset/62452 from trunk)


git-svn-id: https://svn.osgeo.org/grass/grass/branches/releasebranch_7_0@62579 15284696-431f-4ddb-bdfa-cd5b030d7da7

Martin Landa %!s(int64=10) %!d(string=hai) anos
pai
achega
45991015e2
Modificáronse 2 ficheiros con 14 adicións e 5 borrados
  1. 13 4
      lib/python/script/db.py
  2. 1 1
      scripts/v.unpack/v.unpack.py

+ 13 - 4
lib/python/script/db.py

@@ -89,7 +89,7 @@ def db_table_exist(table, **args):
         return True
     return False
 
-def db_connection():
+def db_connection(force=False):
     """!Return the current database connection parameters
     (interface to `db.connect -g'). Example:
 
@@ -98,13 +98,22 @@ def db_connection():
     {'group': 'x', 'schema': '', 'driver': 'dbf', 'database': '$GISDBASE/$LOCATION_NAME/$MAPSET/dbf/'}
     \endcode
 
-    @return parsed output of db.connect
+    :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['driver'] 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
-
+    
     Note: one of <em>sql</em>, <em>filename</em>, or <em>table</em>
     arguments must be provided.
     

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

@@ -138,7 +138,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',