# HG changeset patch # User catherine@dellzilla # Date 1228342849 18000 # Node ID 09592342a33d37660d4452bf95b4dc7cc52e4366 # Parent b2d8bf5f89db29b1fcab42bf8a92ee1dc09ea903 ugh - parsing stripping command causes real trouble diff -r b2d8bf5f89db -r 09592342a33d sqlpython/sqlpyPlus.py --- a/sqlpython/sqlpyPlus.py Tue Dec 02 11:00:21 2008 -0500 +++ b/sqlpython/sqlpyPlus.py Wed Dec 03 17:20:49 2008 -0500 @@ -359,6 +359,7 @@ multilineCommands = '''select insert update delete tselect create drop alter _multiline_comment'''.split() sqlpython.sqlpython.noSpecialParse.append('spool') + legalChars = '!#$%.:?@_*' commentGrammars = pyparsing.Or([pyparsing.Literal('--') + pyparsing.restOfLine, pyparsing.cStyleComment]) defaultFileName = 'afiedt.buf' def __init__(self): @@ -495,13 +496,8 @@ return completions rowlimitPattern = pyparsing.Word(pyparsing.nums)('rowlimit') - rawTerminators = '; \\s \\S \\c \\C \\t \\i \\p \\l \\L \\b ' + ' '.join(output_templates.keys()) - terminatorPattern = (pyparsing.oneOf(rawTerminators) - ^ pyparsing.Literal('\n/') ^ \ - (pyparsing.Literal('\nEOF') + pyparsing.stringEnd)) \ - ('terminator') + \ - pyparsing.Optional(rowlimitPattern) #+ \ - #pyparsing.FollowedBy(pyparsing.LineEnd()) + terminators = '; \\C \\t \\i \\p \\l \\L \\b ' + ' '.join(output_templates.keys()) + def do_select(self, arg, bindVarsIn=None, terminator=None): """Fetch rows from a table. @@ -914,15 +910,14 @@ for target in targets: print target target = target.rstrip(';') - sql = [] try: self.curs.execute('select * from %s where 1=0' % target) # just to fill description if opts.ignorecase: sql = ' or '.join("LOWER(%s) LIKE '%%%s%%'" % (d[0], pattern.lower()) for d in self.curs.description) else: sql = ' or '.join("%s LIKE '%%%s%%'" % (d[0], pattern) for d in self.curs.description) - sql = '* FROM %s WHERE %s' % (target, sql) - self.do_select(self.parsed(sql, useTerminatorFrom=arg)) + sql = self.parsed('SELECT * FROM %s WHERE %s;' % (target, sql), useTerminatorFrom=arg) + self.do_select(sql) except Exception, e: print e import traceback