|
@@ -815,17 +815,18 @@ class DbMgrNotebookBase(FN.FlatNotebook):
|
|
|
|
|
|
# perform SQL non-select statements (e.g. 'delete from table where cat=1')
|
|
|
if len(listOfSQLStatements) > 0:
|
|
|
- sqlFile = tempfile.NamedTemporaryFile(mode = "wt")
|
|
|
+ fd, sqlFilePath = tempfile.mkstemp(text=True)
|
|
|
+ sqlFile = open(sqlFilePath, 'w')
|
|
|
for sql in listOfSQLStatements:
|
|
|
enc = UserSettings.Get(group = 'atm', key = 'encoding', subkey = 'value')
|
|
|
if not enc and 'GRASS_DB_ENCODING' in os.environ:
|
|
|
enc = os.environ['GRASS_DB_ENCODING']
|
|
|
if enc:
|
|
|
- sqlFile.file.write(sql.encode(enc) + ';')
|
|
|
+ sqlFile.write(sql.encode(enc) + ';')
|
|
|
else:
|
|
|
- sqlFile.file.write(sql + ';')
|
|
|
- sqlFile.file.write(os.linesep)
|
|
|
- sqlFile.file.flush()
|
|
|
+ sqlFile.write(sql + ';')
|
|
|
+ sqlFile.write(os.linesep)
|
|
|
+ sqlFile.close()
|
|
|
|
|
|
driver = self.dbMgrData['mapDBInfo'].layers[self.selLayer]["driver"]
|
|
|
database = self.dbMgrData['mapDBInfo'].layers[self.selLayer]["database"]
|
|
@@ -835,10 +836,12 @@ class DbMgrNotebookBase(FN.FlatNotebook):
|
|
|
|
|
|
RunCommand('db.execute',
|
|
|
parent = self,
|
|
|
- input = sqlFile.name,
|
|
|
+ input = sqlFilePath,
|
|
|
driver = driver,
|
|
|
database = database)
|
|
|
|
|
|
+ os.close(fd)
|
|
|
+ os.remove(sqlFilePath)
|
|
|
# reset list of statements
|
|
|
listOfSQLStatements = []
|
|
|
|