예제 #1
0
파일: qadmin.py 프로젝트: ssinger/skytools
def unquote_any(typ, s):
    if typ == 'ident':
        ps = [skytools.unquote_ident(p) for p in s.split('.')]
        s = '.'.join(ps)
    elif typ == 'str' or typ == 'dolq':
        s = skytools.unquote_literal(s, True)
    return s
예제 #2
0
파일: qadmin.py 프로젝트: ssinger/skytools
def unquote_any(typ, s):
    if typ == 'ident':
        ps = [skytools.unquote_ident(p) for p in s.split('.')]
        s = '.'.join(ps)
    elif typ == 'str' or typ == 'dolq':
        s = skytools.unquote_literal(s, True)
    return s
예제 #3
0
def unquote_any(s):
    if s:
        c = s[0]
        if c == "'":
            s = skytools.unquote_literal(s, stdstr = True)
        elif c == '"':
            s = skytools.unquote_ident(s)
        # extquote?
        else:
            s = s.lower()
    return s
예제 #4
0
def unquote_any(s):
    if s:
        c = s[0]
        if c == "'":
            s = skytools.unquote_literal(s, stdstr=True)
        elif c == '"':
            s = skytools.unquote_ident(s)
        # extquote?
        else:
            s = s.lower()
    return s
예제 #5
0
def unquote_any(typ, s):
    global _ident_rc
    if typ == 'ident':
        res = []
        pos = 0
        while 1:
            m = _ident_rc.match(s, pos)
            if not m:
                break
            if m.group('err'):
                raise Exception('invalid syntax for ident')
            s1 = m.group()
            if s1[0] == '"':
                s1 = s1[1:-1].replace('""', '"')
            res.append(s1)
            pos = m.end()
        s = ''.join(res)
    elif typ == 'str' or typ == 'dolq':
        s = skytools.unquote_literal(s, True)
    return s
예제 #6
0
 def parse_sql(self, op, sql, pklist=None):
     """Main entry point."""
     if pklist is None:
         self.pklist = []
     else:
         self.pklist = pklist
     tk = self.tokenizer(sql)
     fields = []
     values = []
     try:
         if op == "I":
             self.parse_insert(tk, fields, values)
         elif op == "U":
             self.parse_update(tk, fields, values)
         elif op == "D":
             self.parse_delete(tk, fields, values)
         raise Exception("syntax error")
     except StopIteration:
         # last sanity check
         if len(fields) == 0 or len(fields) != len(values):
             raise Exception("syntax error, fields do not match values")
     fields = [skytools.unquote_ident(f) for f in fields]
     values = [skytools.unquote_literal(f) for f in values]
     return skytools.dbdict(zip(fields, values))
예제 #7
0
 def _create_dbdict(self, fields, values):
     fields = [skytools.unquote_ident(f) for f in fields]
     values = [skytools.unquote_literal(f) for f in values]
     return skytools.dbdict(zip(fields, values))
예제 #8
0
 def _create_dbdict(self, fields, values):
     fields = [skytools.unquote_ident(f) for f in fields]
     values = [skytools.unquote_literal(f) for f in values]
     return skytools.dbdict(zip(fields, values))