def __buildSchemaRSTFile(self, buildDirectory): print ' generating RST Schema file ', self.buildRstFile = os.path.join(buildDirectory, self.name + '.schema.generated.rst') rst = sqlrst.printer.blockSequenceToRst(self.blocks, indentSQL=1) filehelpers.saveContent(self.buildRstFile, rst) print ' ... done'
def build(self, buildDirectory): print ' CREATE VIEW %s ; ' % self.name, try: self.state.databaseEngine.execute(self.query.block.sqlText) except Exception as e: self._executionError(e) else: print 'SELECT * ', self._computeCSVAndOutputFileNames(buildDirectory) query = 'SELECT * FROM %s; ' % self.query.block.name try: result = self.state.databaseEngine.execute(query, self.csvFile) except Exception as e: self._executionError(e) else: try: result = self.state.databaseEngine.execute(query) except: # we don't care two much self.rowNumber = 0 dbcase.warning('Cannot count results. Not really important in fact.') saveContent(self.outFile,'unkown number of rows.') else: self.rowNumber = len(list(result)) saveContent(self.outFile,'%s row(s)' % self.rowNumber) print ' %s rows. done' % self.rowNumber
def build(self, buildDirectory): print(' *VIEW* {:<48}**'.format(self.name), end=' ') try: self.state.databaseEngine.execute(self.query.block.sqlText) except Exception as e: self._executionError(e) else: self._computeCSVAndOutputFileNames(buildDirectory) query = 'SELECT * FROM %s; ' % self.query.block.name try: result = self.state.databaseEngine.execute(query, self.csvFile) except Exception as e: self._executionError(e) else: try: result = self.state.databaseEngine.execute(query) except: # we don't care two much self.rowNumber = 0 dbcase.warning( 'Cannot count results. Not really important in fact.') saveContent(self.outFile, 'unkown number of rows.') else: self.rowNumber = len(list(result)) saveContent(self.outFile, '%s row(s)' % self.rowNumber) print(' {:>5}'.format(self.rowNumber))
def __insertDatabaseContent(): sql = self.getSQLInsertStatements() filename = '%s_%s.insert.sql' % (self.case.name, self.name) generated_content_file_name = os.path.join( self.stateBuildDirectory, filename) saveContent(generated_content_file_name, sql) self.databaseEngine.executeScript(generated_content_file_name)
def __saveSchemaFile(self, buildDirectory): if self.verbose: print(' saving SQL Schema file', end=' ') self.buildFilename = os.path.join(buildDirectory, self.name+'.schema.sql') saveContent(self.buildFilename, self.sqlRst) if self.verbose: print(' ... done')
def _buildRSTFile(self, buildDirectory): print ' generating RST QuerySet file', outFileName = self.name+'.generated.rst' self.buildRstFile = os.path.join(buildDirectory,outFileName) rst = sqlrst.printer.blockSequenceToRst(self.blocks, indentSQL=1) filehelpers.saveContent(self.buildRstFile, rst) print outFileName, print ' ... done'
def _executionError(self, e): self.error = e self.rowNumber = None self.csvFile = None message = ( "ERROR in '%s/%s.queries.sql'.\nWhen evaluating %s for state '%s':\n\n%s" % (self.query.querySet.case.name, self.query.querySet.name, self.query.key, self.state.name, unicode(self.error))).replace( r'\n', '\n') sphinx_message = '\n.. error::\n\n%s\n\n' % dbcase.indent(1, message) saveContent(self.outFile, sphinx_message) dbcase.warning(message)
def _executionError(self, e): self.error = e self.rowNumber = None self.csvFile = None message = ( "ERROR in '%s/%s.queries.sql'.\nWhen evaluating %s for state '%s':\n\n%s" % ( self.query.querySet.case.name, self.query.querySet.name, self.query.key, self.state.name, unicode(self.error))).replace(r'\n','\n') sphinx_message = '\n.. error::\n\n%s\n\n' % dbcase.indent(1, message) saveContent(self.outFile, sphinx_message) dbcase.warning(message)
def _buildRSTFile(self, buildDirectory): """ Generate RST query set file named ``*.generated.rst`` :param buildDirectory (str): path to the str directory. :return: None """ print ' generating RST QuerySet file', outFileName = self.name + '.generated.rst' self.buildRstFile = os.path.join(buildDirectory, outFileName) rst = sqlrst.printer.blockSequenceToRst(self.blocks, indentSQL=1) filehelpers.saveContent(self.buildRstFile, rst) print outFileName, print ' ... done'
def build(self, outputDirectory='schemaspy', options='-hq -noads -nologo', schemaSpyOutput='/dev/null'): filehelpers.ensureDirectory(outputDirectory) self.lastCommandOutputFile = os.path.join(outputDirectory, 'schemaspy.out.txt') command = '%s -t %s -db %s -sso -o %s %s >>%s' % ( self.schemaSpyCommand, SCHEMASPY_SQLITE_PROPERTY, self.dataBaseFile, outputDirectory, options, self.lastCommandOutputFile) filehelpers.saveContent(self.lastCommandOutputFile, command + '\n\n') self.lastExitCode = os.system(command) if self.lastExitCode != 0: raise ValueError( 'SchemaSpy Error: exit code=%s. See %s for details' % (self.lastExitCode, self.lastCommandOutputFile))
def _buildQuerySetsIndexFile(self, subTitleCharacter='"'): index_filename = os.path.join( self.buildDirectory, '%s.queries.generated.rst' % self.name) index_content = '' for query_set in self.querySetMap.values(): # add a subtitle if required if subTitleCharacter is not None: index_content += '%s\n%s\n\n' % ( query_set.name, subTitleCharacter*len(query_set.name)) # add an include index_content += ( '.. include:: %s\n\n'% self._pathFromRootSphinxDirectory(query_set.buildRstFile) ) print ' saving %s ... ' % index_filename saveContent(index_filename, index_content) print 'done'
def build(self, buildDirectory): print ' SELECT %s ... ' % self.name, self._computeCSVAndOutputFileNames(buildDirectory) query = self.query.block.sqlText try: result = self.state.databaseEngine.execute(query, self.csvFile) except Exception as e: self._executionError(e) else: try: result = self.state.databaseEngine.execute(query) except: # we don't care two much self.rowNumber = 0 dbcase.warning( 'Cannot count results. Not really important in fact.') saveContent(self.outFile, 'unkown number of rows.') else: self.rowNumber = len(list(result)) saveContent(self.outFile, '%s row(s)' % self.rowNumber) print ' %s rows. done' % self.rowNumber
def build(self, outputDirectory='schemaspy', options='-hq -noads -nologo', schemaSpyOutput='/dev/null' ): filehelpers.ensureDirectory(outputDirectory) self.lastCommandOutputFile = os.path.join(outputDirectory, 'schemaspy.out.txt') command = '%s -t %s -db %s -sso -o %s %s >>%s' % ( self.schemaSpyCommand, SCHEMASPY_SQLITE_PROPERTY, self.dataBaseFile, outputDirectory, options, self.lastCommandOutputFile ) filehelpers.saveContent(self.lastCommandOutputFile, command+'\n\n') self.lastExitCode = os.system(command) if self.lastExitCode != 0: raise ValueError( 'SchemaSpy Error: exit code=%s. See %s for details' % (self.lastExitCode, self.lastCommandOutputFile))
def __saveSchemaFile(self, buildDirectory): print ' saving SQL Schema file', self.buildFilename = os.path.join(buildDirectory, self.name + '.schema.sql') saveContent(self.buildFilename, self.sqlRst) print ' ... done'
def __insertDatabaseContent(): sql = self.getSQLInsertStatements() filename = '%s_%s.insert.sql' % (self.case.name, self.name) generated_content_file_name = os.path.join(self.stateBuildDirectory,filename) saveContent(generated_content_file_name, sql) self.databaseEngine.executeScript(generated_content_file_name)
def __saveSchemaFile(self, buildDirectory): print ' saving SQL Schema file', self.buildFilename = os.path.join(buildDirectory, self.name+'.schema.sql') saveContent(self.buildFilename, self.sqlRst) print ' ... done'
def __buildSchemaRSTFile(self, buildDirectory): print ' generating RST Schema file ', self.buildRstFile = os.path.join(buildDirectory, self.name+'.schema.generated.rst') rst = sqlrst.printer.blockSequenceToRst(self.blocks, indentSQL=1) filehelpers.saveContent(self.buildRstFile, rst) print ' ... done'