예제 #1
0
def do_sql(req):  #, sql):
    sql = req.REQUEST.get('sql')
    parms = req.REQUEST.getlist(
        'parms[]')  # add [] - new 1/4/15 JJW on django17
    updates = req.REQUEST.get('updates') == 'true'
    cursor = connection.cursor()
    cursor.name = 'MyName'
    content = h3('Updating DB', style='color:red') if updates else h3(
        'Not updating DB', style='color:green')

    if trace: print 'UPDATES:', updates, 'parms:', parms, 'req:', req

    if not parms and '%' in sql:
        sql = sql.replace('%', '%%')
    elif parms and '%' in sql:
        sql = re.sub(r'%([^s\(])', r'%%\1',
                     sql)  #  escape all %'s except %s and %(..

    if '%(' in sql:
        parms = dict([('parm' + ` x + 1 `, p) for x, p in enumerate(parms)])
    else:
        parms = [p for p in parms if p]  # lose the '' entries
        #parms = [[int(i) for i in p.split(',')] for p in req.REQUEST.getlist('parms') if p]  # lose the '' entries
        #parms = [p.split(',') for p in req.REQUEST.getlist('parms') if p]  # lose the '' entries

    if trace: print '\nparms:', parms, '\nsql:', sql, '\n'

    # TEST: todo: smartly handle % and %s with parms, use %(.. to set parms to dict..
    # INVERT: todo: 'updates' bool, 'many' bool for lists of ids in parms, or smartly set on presence of ','
    # todo: split on ';' and use executescript if >1

    #if len ([s for s in sql.split (';') if s.strip()]) > 1:
    #  cursor.executescript(sql, parms)
    #else:

    try:
        ex = cursor.execute(sql, parms)
    except ProgrammingError, e:
        content += h2('SQL Programming Error: %s', e)
예제 #2
0
def do_sql (req) : #, sql):
  sql = req.REQUEST.get('sql')
  parms = req.REQUEST.getlist('parms[]')  # add [] - new 1/4/15 JJW on django17
  updates = req.REQUEST.get('updates') == 'true'
  cursor = connection.cursor()
  cursor.name = 'MyName'
  content = h3('Updating DB', style='color:red') if updates else h3('Not updating DB', style='color:green')

  if trace: print 'UPDATES:', updates, 'parms:', parms, 'req:', req

  if not parms and '%' in sql:
    sql = sql.replace ('%','%%')
  elif parms and '%' in sql:
    sql = re.sub (r'%([^s\(])', r'%%\1', sql)  #  escape all %'s except %s and %(..

  if '%(' in sql:
    parms = dict ([('parm' + `x+1`, p) for x,p in enumerate(parms)])
  else:
    parms = [p for p in parms if p]  # lose the '' entries
    #parms = [[int(i) for i in p.split(',')] for p in req.REQUEST.getlist('parms') if p]  # lose the '' entries
    #parms = [p.split(',') for p in req.REQUEST.getlist('parms') if p]  # lose the '' entries

  if trace: print '\nparms:', parms, '\nsql:', sql, '\n'

  # TEST: todo: smartly handle % and %s with parms, use %(.. to set parms to dict..
  # INVERT: todo: 'updates' bool, 'many' bool for lists of ids in parms, or smartly set on presence of ','
  # todo: split on ';' and use executescript if >1

  #if len ([s for s in sql.split (';') if s.strip()]) > 1:
  #  cursor.executescript(sql, parms)
  #else:

  try:
    ex = cursor.execute(sql, parms)
  except ProgrammingError, e:
    content += h2 ('SQL Programming Error: %s', e)
예제 #3
0
  desc = cursor.description
  #rows = cursor.fetchone() if rowcount == 1 else cursor.fetchall()  nope

  try:
    rows = cursor.fetchall()

    columns = [d [0] for d in cursor.description] # name,type_code,display_size,internal_size,precision,scale,null_ok
    column_range = range (len (columns))

    header = th (['row'] + columns)
    tbody = []

    for rowx, row in enumerate (rows):
      tbody += [td ([rowx] + [row [colx] for colx in column_range])]

    content += h2 ('%s result row%s returned' % (len(rows), '' if len(rows)==1 else 's'))  # could use cursor.rowcount
    content += table (tr ([header]) + tr (tbody))

  except DatabaseError, e:
    content += h2 ('(No results returned)')
  #Trying to catch except database related errors here
  except:
    content += h2 ('(No results returned)')

  if hasattr (cursor, 'query'):
    content += h3 ('SQL Performed:') + pre (cursor.query)  #_executed)

  if hasattr (cursor, 'rowcount') and cursor.rowcount:
    content += h3 ('Cursor row count:' + `cursor.rowcount`)

  if hasattr (cursor, 'messages'):
예제 #4
0
    try:
        rows = cursor.fetchall()

        columns = [
            d[0] for d in cursor.description
        ]  # name,type_code,display_size,internal_size,precision,scale,null_ok
        column_range = range(len(columns))

        header = th(['row'] + columns)
        tbody = []

        for rowx, row in enumerate(rows):
            tbody += [td([rowx] + [row[colx] for colx in column_range])]

        content += h2(
            '%s result row%s returned' %
            (len(rows),
             '' if len(rows) == 1 else 's'))  # could use cursor.rowcount
        content += table(tr([header]) + tr(tbody))

    except DatabaseError, e:
        content += h2('(No results returned)')
    #Trying to catch except database related errors here
    except:
        content += h2('(No results returned)')

    if hasattr(cursor, 'query'):
        content += h3('SQL Performed:') + pre(cursor.query)  #_executed)

    if hasattr(cursor, 'rowcount') and cursor.rowcount:
        content += h3('Cursor row count:' + ` cursor.rowcount `)