def strsplitv(*args): ###splits the first arguments """ .. function:: strsplitv(str[,formatting options]) -> [C1] Splits in rows *str* according to *formatting options*, default behavior is to split on space. It is a multiset operator that returns one column but many rows. :ref:`Formatting options<formattingopts>` are like in :func:`strsplit` function. .. seealso:: * :ref:`tutmultiset` functions >>> sql("select strsplitv('First,Second,Third','dialect:csv')") C1 ------ First Second Third >>> sql("select strsplitv('First Second Third')") C1 ------ First Second Third """ if len(args)<1: raise functions.OperatorError("strsplitv","strsplit operator: no input") arg=args[0] args=args[1:] try: largs, kargs = argsparse.parse(args,csvargs.boolargs,csvargs.nonstringargs,csvargs.needsescape) except Exception,e: raise functions.MadisError(e)
def __init__(self, tblist, boolargs, nonstringargs, needsescape, *args, **envars): # envars tablename, auto , OPTIONAL [] self.delayedexception = None self.tblist = tblist self.auto = False self.first = True self.schema = "create table %s('Error')" % (envars['tablename']) self.tablename = envars['tablename'] self.description = None self.consdict = {} self.coldata = [] self.rowids = [] self.kdindex = None self.lastcalculatedidx = None self.ordered = False self.envarsdb = envars['db'] self.innerjoin = True self.query = None self.keepcursor = True largs, kargs = [], dict() try: largs, kargs = argsparse.parse(args, boolargs, nonstringargs, needsescape) except Exception, e: raise functions.MadisError(e)
def __init__( self, tblist, boolargs, nonstringargs, needsescape, *args, **envars ): # envars tablename, auto , OPTIONAL [] self.delayedexception = None self.tblist = tblist self.auto = False self.first = True self.schema = "create table %s('Error')" % (envars["tablename"]) self.tablename = envars["tablename"] self.description = None self.consdict = {} self.coldata = [] self.rowids = [] self.kdindex = None self.lastcalculatedidx = None self.ordered = False self.envarsdb = envars["db"] self.innerjoin = True self.query = None self.keepcursor = True largs, kargs = [], dict() try: largs, kargs = argsparse.parse(args, boolargs, nonstringargs, needsescape) except Exception, e: raise functions.MadisError(e)
def maincode(args, boolargs, nonstringargs, needsescape, notsplit, db, func, retalways, connectionhandler): autostring = 'automatic_vtable' try: largs, kargs = argsparse.parse(args, boolargs, nonstringargs, needsescape, notsplit) except Exception, e: raise functions.MadisError(e)
def full_parse(self, args, boolargs=None, nonstringargs=None, needsescape=None, notsplit=None): return argsparse.parse(args, boolargs, nonstringargs, needsescape, notsplit)
def __init__(self,vtable,tblist,boolargs,nonstringargs,needsescape,notsplit,staticschema,*args,**envars): # envars tablename, auto , OPTIONAL [] self.delayedexception=None self.tblist=tblist self.auto=False self.first=True self.staticschema=staticschema self.schema="create table %s('Error')" % (envars['tablename']) self.tablename=envars['tablename'] self.envars=envars largs, kargs = [] ,dict() try: largs, kargs = argsparse.parse(args,boolargs,nonstringargs,needsescape,notsplit) except Exception,e: raise #functions.MadisError(e)
def strjoin(*args): """ .. function:: strjoin(value1,value2,....[,'params',formatting options]) Returns a string with *value1,value2,....* formatted according to :ref:`formatting options<formattingopts>`. Literal parameter 'params' must precede *formating options*. Default formatting is comma separated values. Examples: >>> sql("select strjoin('First','Second','Third',100) as joinedvals") joinedvals ----------------------- First,Second,Third,100 >>> sql("select strjoin('First','Second','Third',100,'params','delimiter: ') as joinedvals") joinedvals ----------------------- First Second Third 100 >>> sql("select strjoin('lola',2,10,'llalallall','params','delimiter:%','quoting:QUOTE_ALL') as joinedvals") joinedvals ----------------------------- "lola"%"2"%"10"%"llalallall" >>> sql("select strjoin('value, with delimiter ',2,10,'new','params','dialect:csv') as joinedvals") joinedvals ---------------------------------- "value, with delimiter ",2,10,new """ if None in args: return None sargs=[] params=False for i in xrange(len(args)): if args[i]=='params': args=args[(i+1):] params=True break else: sargs.append(args[i]) try: if params: largs, kargs = argsparse.parse(args,csvargs.boolargs,csvargs.nonstringargs,csvargs.needsescape) else: largs=[] kargs=dict() except Exception,e: raise functions.MadisError(e)
def maincode(args,boolargs,nonstringargs,needsescape,notsplit,db,func,retalways,connectionhandler): autostring='automatic_vtable' try: largs, kargs = argsparse.parse(args,boolargs,nonstringargs,needsescape,notsplit) except Exception,e: raise functions.MadisError(e)
def full_parse(self,args,boolargs=None,nonstringargs=None,needsescape=None, notsplit=None): return argsparse.parse(args,boolargs,nonstringargs,needsescape,notsplit)
def strsplit(*args): ###splits the first arguments """ .. function:: strsplit(str[,formatting options]) -> [C1,C2,....] Splits *str* according to *formatting options*, default behavior is to split on space. It is a multiset operator that returns one row. .. seealso:: * :ref:`tutmultiset` functions .. _formattingopts: Formatting options: :dialect: *tsv/csv* Formats field as tab/comma separated values with minimal quoting :delimiter: A string used to separate fields. It defaults to ' ' :doublequote: *t/f* Controls how instances of quotechar appearing inside a field should be themselves be quoted. When True, the character is doubled. When False, the escapechar is used as a prefix to the quotechar. It defaults to True. On output, if doublequote is False and no escapechar is set, Error is raised if a quotechar is found in a field :escapechar: A one-character string used by the writer to escape the delimiter if quoting is set to QUOTE_NONE and the quotechar if doublequote is False. On reading, the escapechar removes any special meaning from the following character. It defaults to None, which disables escaping. :quotechar: A one-character string used to quote fields containing special characters, such as the delimiter or quotechar, or which contain new-line characters. It defaults to '"'. :quoting: Controls when quotes should be generated by the writer and recognized by the reader. It can take on any of the QUOTE_* constants and defaults to QUOTE_MINIMAL. Possible values are QUOTE_ALL, QUOTE_NONE, QUOTE_MINIMAL, QUOTE_NONNUMERIC :skipinitialspace: *t/f* When True, whitespace immediately following the delimiter is ignored. The default is False :Returned multiset schema: - *C1,C2...* Text values produced from splitting. Examples: >>> sql("select strsplit('First,Second,Third', 'dialect:csv')") C1 | C2 | C3 ---------------------- First | Second | Third >>> sql("select strsplit('-First-%Second%-Third-','delimiter:%','quotechar:-')") C1 | C2 | C3 ---------------------- First | Second | Third .. doctest:: :hide: >>> sql("select strsplit('-First-%Second%-Third-','quotechar:-p')") #doctest:+ELLIPSIS +NORMALIZE_WHITESPACE Traceback (most recent call last): ... MadisError: Madis SQLError: "quotechar" must be an 1-character string """ if len(args)<1: raise functions.OperatorError("strsplit"," no input") arg=args[0] args=args[1:] try: largs, kargs = argsparse.parse(args,csvargs.boolargs,csvargs.nonstringargs,csvargs.needsescape) except Exception,e: raise functions.MadisError(e)