# HG changeset patch # User catherine@Drou # Date 1266273896 18000 # Node ID fd86d22fe00de70969197f219c082838491815f5 # Parent abf71d72f467afb22c0d86d01354298023368d77 mostly compatible with cmd2 0.6 - minor transcript test problem diff -r abf71d72f467 -r fd86d22fe00d setup.py --- a/setup.py Thu Feb 11 16:07:34 2010 -0500 +++ b/setup.py Mon Feb 15 17:44:56 2010 -0500 @@ -17,7 +17,7 @@ url="http://packages.python.org/sqlpython", packages=find_packages(), include_package_data=True, - install_requires=['pyparsing','cmd2>=0.6.0','gerald>=0.3.5', + install_requires=['pyparsing','cmd2>=0.6.0','gerald>=0.3.6', 'genshi>=0.5'], extras_require = { 'oracle': ['cx_Oracle>=5.0.2'], diff -r abf71d72f467 -r fd86d22fe00d sqlpython/exampleSession.txt --- a/sqlpython/exampleSession.txt Thu Feb 11 16:07:34 2010 -0500 +++ b/sqlpython/exampleSession.txt Mon Feb 15 17:44:56 2010 -0500 @@ -4,10 +4,6 @@ user testschema, password testschema, with the RESOURCE privilege (`GRANT RESOURCE TO testschema`). -SQL.No_Connection> set color off -colors - was: True -now: False - SQL.No_Connection> connect testschema/testschema@orcl 0:testschema@orcl> drop table play; /.*/ diff -r abf71d72f467 -r fd86d22fe00d sqlpython/mysqlpy.py --- a/sqlpython/mysqlpy.py Thu Feb 11 16:07:34 2010 -0500 +++ b/sqlpython/mysqlpy.py Mon Feb 15 17:44:56 2010 -0500 @@ -102,7 +102,6 @@ def do_longops(self,args): '''Runs query_longops defined above, to display long running operations (full scans, etc)''' - import pdb; pdb.set_trace() self.onecmd(self.query_longops) def do_load(self,args): @@ -185,39 +184,7 @@ def run(): my=mysqlpy() - print my.__doc__ - # split a complex argument string, like - # ``--postgres -H localhost dbname username ls "select * from tbl" @myscript`` - # into a portion to feed to ``do_connect`` and a portion to run as SQL commands - connectstring = sys.argv[1:] - commands = [] - for (n, arg) in enumerate(sys.argv[1:]): - if arg.startswith('@') or len(arg.split()) > 1: - connectstring = sys.argv[1:n+1] - commands = sys.argv[n+1:] - break - if connectstring: - my.onecmd('connect %s' % ' '.join(connectstring)) - for command in commands: - if my.onecmd(command + '\n') == my._STOP_AND_EXIT: - return my.cmdloop() -class TestCase(Cmd2TestCase): - CmdApp = mysqlpy - if __name__ == '__main__': - testfiles = sys.argv[1:] - for arg in ('-t', '--test'): - if arg in testfiles: - testfiles.remove(arg) - sys.argv.remove(arg) - mysqlpy.testfiles = testfiles - if not testfiles: - print 'No test file specified to run against!' - sys.exit() - if hasattr(mysqlpy, 'testfiles'): - sys.argv = [sys.argv[0]] # the --test argument upsets unittest.main() - unittest.main() - else: - run() \ No newline at end of file + run() \ No newline at end of file diff -r abf71d72f467 -r fd86d22fe00d sqlpython/sqlpyPlus.py --- a/sqlpython/sqlpyPlus.py Thu Feb 11 16:07:34 2010 -0500 +++ b/sqlpython/sqlpyPlus.py Mon Feb 15 17:44:56 2010 -0500 @@ -375,7 +375,8 @@ def __init__(self): sqlpython.sqlpython.__init__(self) self.binds = CaselessDict() - self.settable.pop('case_insensitive') + if self.settable.has_key('case_insensitive'): + self.settable.pop('case_insensitive') self.stdoutBeforeSpool = sys.stdout self.sql_echo = False self.spoolFile = None @@ -1355,7 +1356,6 @@ (False, 'foo', None) ''' arg = self.parsed(arg) - import pdb; pdb.set_trace() try: var, val = self.assignmentSplitter.split(arg, maxsplit=1) except ValueError: @@ -1624,6 +1624,32 @@ # TODO: needs much polish return self.do__dir_constraints(arg) + def run_commands_at_invocation(self, callargs): + connection_args = [] + while True: + try: + arg = callargs.pop(0) + connection_args.append(arg) + if ';' in arg: + break + except IndexError: + break + if connection_args: + self.do_connect(' '.join(connection_args)) + sqlpython.sqlpython.run_commands_at_invocation(self, callargs) + for arg in callargs: + connection_args.append(callargs.pop()) + for initial_command in callargs: + if self.onecmd(initial_command + '\n') == app._STOP_AND_EXIT: + return + + def cmdloop(self): + if sys.argv[1] in ('--test', '-t'): + self.runTranscriptTests(sys.argv[2:]) + else: + self.run_commands_at_invocation(sys.argv[1:]) + self._cmdloop() + def _test(): import doctest doctest.testmod() diff -r abf71d72f467 -r fd86d22fe00d sqlpython/sqlpython.py --- a/sqlpython/sqlpython.py Thu Feb 11 16:07:34 2010 -0500 +++ b/sqlpython/sqlpython.py Mon Feb 15 17:44:56 2010 -0500 @@ -109,29 +109,26 @@ if (self.rdbms == 'oracle') and self.serveroutput: self.curs.callproc('dbms_output.enable', []) return True - - @cmd2.options([cmd2.make_option('-a', '--add', action='store_true', + + @cmd2.options([cmd2.make_option('-a', '--add', action='store_true', help='add connection (keep current connection)'), - cmd2.make_option('-c', '--close', action='store_true', + cmd2.make_option('-c', '--close', action='store_true', help='close connection {N} (or current)'), - cmd2.make_option('-C', '--closeall', action='store_true', + cmd2.make_option('-C', '--closeall', action='store_true', help='close all connections'), cmd2.make_option('--postgres', action='store_true', help='Connect to postgreSQL: `sqlpython --postgres [DBNAME [USERNAME]]`'), cmd2.make_option('--oracle', action='store_true', help='Connect to an Oracle database'), - cmd2.make_option('--mysql', action='store_true', help='Connect to a MySQL database'), - cmd2.make_option('-H', '--hostname', type='string', - help='Machine where database is hosted'), - cmd2.make_option('-p', '--port', type='int', - help='Port to connect to'), - cmd2.make_option('--password', type='string', - help='Password'), - cmd2.make_option('-d', '--database', type='string', + cmd2.make_option('--mysql', action='store_true', help='Connect to a MySQL database'), + cmd2.make_option('-H', '--hostname', type='string', + help='Machine where database is hosted'), + cmd2.make_option('-p', '--port', type='int', + help='Port to connect to'), + cmd2.make_option('--password', type='string', + help='Password'), + cmd2.make_option('-d', '--database', type='string', help='Database name to connect to'), - cmd2.make_option('-U', '--username', type='string', - help='Database user name to connect as'), -# cmd2.make_option('-u', '--user', type='string', -# help='Database user name to connect as') - ]) + cmd2.make_option('-U', '--username', type='string', + help='Database user name to connect as')]) def do_connect(self, arg, opts): '''Opens the DB connection'''