Mercurial > sqlpython
diff sqlpyPlus.py @ 116:6e346ae994b9
beginning adaptation to new cmd2
author | catherine@Elli.myhome.westell.com |
---|---|
date | Fri, 04 Jul 2008 14:54:01 -0400 |
parents | 289b0a472b65 |
children | dfb71885dd41 |
line wrap: on
line diff
--- a/sqlpyPlus.py Fri Jun 13 15:53:03 2008 -0400 +++ b/sqlpyPlus.py Fri Jul 04 14:54:01 2008 -0400 @@ -505,15 +505,11 @@ statementEndPattern = re.compile(r'(.*)(;|\\[gGhtxicCsS])\s*(\d*)\s*$', re.DOTALL | re.MULTILINE) # what about quote-enclosed? - def findTerminator(self, statement): - m = self.statementEndPattern.search(statement) - if m: - return m.groups() - else: - return statement, None, None - legalOracle = re.compile('[a-zA-Z_$#]') + rowlimitPattern = pyparsing.Word(pyparsing.nums)('rowlimit') + terminators = pyparsing.oneOf('; \\s \\S \\c \\C \\t \\x \\h \n/\n')('terminator') + \ + pyparsing.Optional(rowlimitPattern) def do_select(self, arg, bindVarsIn=None, override_terminator=None): """Fetch rows from a table. @@ -525,19 +521,19 @@ ("help terminators" for details) """ bindVarsIn = bindVarsIn or {} - self.query = 'select ' + arg - (self.query, terminator, rowlimit) = self.findTerminator(self.query) + statement = self.parsed('select ' + arg) + self.query = statement.statement if override_terminator: - terminator = override_terminator - rowlimit = int(rowlimit or 0) + statement['terminator'] = override_terminator + statement['rowlimit'] = int(statement.rowlimit or 0) try: self.varsUsed = findBinds(self.query, self.binds, bindVarsIn) self.curs.execute(self.query, self.varsUsed) - self.rows = self.curs.fetchmany(min(self.maxfetch, (rowlimit or self.maxfetch))) + self.rows = self.curs.fetchmany(min(self.maxfetch, (statement.rowlimit or self.maxfetch))) self.desc = self.curs.description self.rc = self.curs.rowcount if self.rc > 0: - self.stdout.write('\n%s\n' % (self.output(terminator, rowlimit))) + self.stdout.write('\n%s\n' % (self.output(statement.terminator, rowlimit))) if self.rc == 0: print '\nNo rows Selected.\n' elif self.rc == 1: