Ejemplo n.º 1
0
Archivo: db.py Proyecto: fireyy/spyder
    def query(self, sql_query, vars=None, processed=False, _test=False):
	if vars is None: vars = {}

	if not processed and not isinstance(sql_query, SQLQuery):
	    sql_query = reparam(sql_query, vars)

	if _test: return sql_query

	db_cursor = self._db_cursor()
	self._db_execute(db_cursor, sql_query)

	if db_cursor.description:
	    names = [x[0] for x in db_cursor.description]
	    def iterwrapper():
		row = db_cursor.fetchone()
		while row:
		    yield storage(dict(zip(names, row)))
		    row = db_cursor.fetchone()
	    out = iterbetter(iterwrapper())
	    out.__len__ = lambda: int(db_cursor.rowcount)
	    
	    # data, fields
	    out.list = lambda: [storage(dict(zip(names, x))) \
		    for x in db_cursor.fetchall()]

	    #table fields
	    out.fields = names
	else:
	    out = db_cursor.rowcount

	if not self.ctx.transactions:
	    self.ctx.commit()
	return out
Ejemplo n.º 2
0
Archivo: db.py Proyecto: kindy61/webpy
 def query(self, sql_query, vars=None, processed=False, _test=False, _rawdata=False, _rawcur=False): 
     """
     Execute SQL query `sql_query` using dictionary `vars` to interpolate it.
     If `processed=True`, `vars` is a `reparam`-style list to use 
     instead of interpolating.
     
         >>> db = DB(None, {})
         >>> db.query("SELECT * FROM foo", _test=True)
         <sql: 'SELECT * FROM foo'>
         >>> db.query("SELECT * FROM foo WHERE x = $x", vars=dict(x='f'), _test=True)
         <sql: "SELECT * FROM foo WHERE x = 'f'">
         >>> db.query("SELECT * FROM foo WHERE x = " + sqlquote('f'), _test=True)
         <sql: "SELECT * FROM foo WHERE x = 'f'">
     """
     if vars is None: vars = {}
     
     if not processed and not isinstance(sql_query, SQLQuery):
         sql_query = reparam(sql_query, vars)
     
     if _test: return sql_query
     
     db_cursor = self._db_cursor()
     self._db_execute(db_cursor, sql_query)
     
     if _rawcur:
         return db_cursor
     
     if db_cursor.description:
         names = [x[0] for x in db_cursor.description]
         def iterwrapper():
             row = db_cursor.fetchone()
             while row:
                 yield row if _rawdata else storage(dict(zip(names, row)))
                 row = db_cursor.fetchone()
         out = iterbetter(iterwrapper())
         out.__len__ = lambda: int(db_cursor.rowcount)
         out.list = lambda: [x if _rawdata else storage(dict(zip(names, x))) \
                            for x in db_cursor.fetchall()]
         if _rawdata:
             out.names = names
     else:
         out = db_cursor.rowcount
     
     if not self.ctx.transactions: 
         self.ctx.commit()
     
     return out
Ejemplo n.º 3
0
    def query(self, sql_query, vars=None, processed=False, _test=False):
        """
        Execute SQL query `sql_query` using dictionary `vars` to interpolate it.
        If `processed=True`, `vars` is a `reparam`-style list to use 
        instead of interpolating.
        
            >>> db = DB(None, {})
            >>> db.query("SELECT * FROM foo", _test=True)
            <sql: 'SELECT * FROM foo'>
            >>> db.query("SELECT * FROM foo WHERE x = $x", vars=dict(x='f'), _test=True)
            <sql: "SELECT * FROM foo WHERE x = 'f'">
            >>> db.query("SELECT * FROM foo WHERE x = " + sqlquote('f'), _test=True)
            <sql: "SELECT * FROM foo WHERE x = 'f'">
        """
        if vars is None: vars = {}

        if not processed and not isinstance(sql_query, SQLQuery):
            sql_query = reparam(sql_query, vars)

        if _test: return sql_query

        db_cursor = self._db_cursor()
        self._db_execute(db_cursor, sql_query)

        if db_cursor.description:
            names = [x[0] for x in db_cursor.description]

            def iterwrapper():
                row = db_cursor.fetchone()  # fetchone()
                while row:
                    yield storage(dict(zip(names, row)))
                    row = db_cursor.fetchone()

            out = iterbetter(iterwrapper())
            out.__len__ = lambda: int(db_cursor.rowcount)
            out.list = lambda: [
                storage(dict(zip(names, x))) for x in db_cursor.fetchall()
            ]  # fetchall()
        else:
            out = db_cursor.rowcount

        if not self.ctx.transactions:
            self.ctx.commit()
        return out