Пример #1
0
    def testFullResultSet(self):
        """
        Function to test all the functionality of the ResultSet

        """

        #ResultSet is a very simple function.  This function should
        #create a ResultSet, fill it with data, and then read it
        #out, all in one go.


        testSet = ResultSet()

        testDict = {'column1': 'value1', 'column2':'value2'}
        binds    = [ {'column1':'value3a', 'column2': 'value2a'},
                     {'column1':'value3b', 'column2': 'value2b'},
                     {'column1':'value3c', 'column2': 'value2c'}]


        self.myThread.dbi.processData('insert into test_tablec (column1, column2) values (:column1, :column2)', testDict)
        self.myThread.dbi.processData('insert into test_tablec (column1, column2) values (:column1, :column2)', binds)
        testProxy = self.myThread.dbi.connection().execute('select * from test_tablec')

        #import pdb
        #pdb.set_trace()
        testSet.add(testProxy)

        #Test to make sure fetchone and fetchall both work
        self.assertEqual(str(testSet.fetchone()[0]), 'value1')
        self.assertEqual(str(testSet.fetchall()[-1][1]), 'value2c')
Пример #2
0
    def test1000Binds(self):

        testSet2 = ResultSet()

        #Now insert and select a huge number of values
        #This depends on the times variable
        binds = [ ]
        largeInsert  = [ ]
        times = 1000

        #For now I don't want to get too dependent on processData() with many binds, since right now
        #it doesn't work.  That does make things awkward though.
        for i in range(times):
            binds = {'column1': 'value1'+str(i), 'column2':'value2'+str(i)}
            self.myThread.dbi.processData("insert into test_tablec (column1, column2) values (:column1, :column2)", binds)



        sql = "select column1 from test_tablec"
        testProxy = self.myThread.dbi.connection().execute(sql)

        testSet2.add(testProxy)

        self.assertEqual(len(testSet2.fetchall()), times)
        dialect = self.myThread.dialect.lower()
        if dialect == 'mysql':
            self.assertEqual(str(testSet2.fetchall()[1][0]), 'value11')
            self.assertEqual(testSet2.fetchone()[0], 'value10')
        elif dialect == 'oracle':
            self.assertEqual(str(testSet2.fetchall()[1][0]), 'value11')
            self.assertEqual(testSet2.fetchone()[0], 'value10')


        return
Пример #3
0
    def test1000Binds(self):

        testSet2 = ResultSet()

        #Now insert and select a huge number of values
        #This depends on the times variable
        binds = [ ]
        largeInsert  = [ ]
        times = 1000

        #For now I don't want to get too dependent on processData() with many binds, since right now
        #it doesn't work.  That does make things awkward though.
        for i in range(times):
            binds = {'column1': 'value1'+str(i), 'column2':'value2'+str(i)}
            self.myThread.dbi.processData("insert into test_tablec (column1, column2) values (:column1, :column2)", binds)



        sql = "select column1 from test_tablec"
        testProxy = self.myThread.dbi.connection().execute(sql)

        testSet2.add(testProxy)

        self.assertEqual(len(testSet2.fetchall()), times)
        dialect = self.myThread.dialect.lower()
        if dialect == 'mysql':
            self.assertEqual(str(testSet2.fetchall()[1][0]), 'value11')
            self.assertEqual(testSet2.fetchone()[0], 'value10')
        elif dialect == 'oracle':
            self.assertEqual(str(testSet2.fetchall()[1][0]), 'value11')
            self.assertEqual(testSet2.fetchone()[0], 'value10')


        return
Пример #4
0
    def executebinds(self, s=None, b=None, connection=None,
                     returnCursor=False):
        """
        _executebinds_

        returns a list of sqlalchemy.engine.base.ResultProxy objects
        """
        if b == None:
            resultProxy = connection.execute(s)
        else:
            resultProxy = connection.execute(s, b)

        if returnCursor:
            return resultProxy

        result = ResultSet()
        result.add(resultProxy)
        resultProxy.close()
        return result
Пример #5
0
    def executemanybinds(self,
                         s=None,
                         b=None,
                         connection=None,
                         returnCursor=False):
        """
        _executemanybinds_
        b is a list of dictionaries for the binds, e.g.:

        b = [ {'bind1':'value1a', 'bind2': 'value2a'},
        {'bind1':'value1b', 'bind2': 'value2b'} ]

        see: http://www.gingerandjohn.com/archives/2004/02/26/cx_oracle-executemany-example/

        Can't executemany() selects - so do each combination of binds here instead.
        This will return a list of sqlalchemy.engine.base.ResultProxy object's
        one for each set of binds.

        returns a list of sqlalchemy.engine.base.ResultProxy objects
        """

        s = s.strip()
        if s.lower().endswith('select', 0, 6):
            """
            Trying to select many
            """
            if returnCursor:
                result = []
                for bind in b:
                    result.append(connection.execute(s, bind))
            else:
                result = ResultSet()
                for bind in b:
                    resultproxy = connection.execute(s, bind)
                    result.add(resultproxy)
                    resultproxy.close()

            return self.makelist(result)
        """
        Now inserting or updating many
        """
        result = connection.execute(s, b)
        return self.makelist(result)
Пример #6
0
    def executebinds(self, s=None, b=None, connection=None,
                     returnCursor=False):
        """
        _executebinds_

        returns a list of sqlalchemy.engine.base.ResultProxy objects
        """
        if b == None:
            resultProxy = connection.execute(s)
        else:
            resultProxy = connection.execute(s, b)

        if returnCursor:
            return resultProxy

        result = ResultSet()
        result.add(resultProxy)
        resultProxy.close()
        return result
Пример #7
0
    def executemanybinds(self, s=None, b=None, connection=None,
                         returnCursor=False):
        """
        _executemanybinds_
        b is a list of dictionaries for the binds, e.g.:

        b = [ {'bind1':'value1a', 'bind2': 'value2a'},
        {'bind1':'value1b', 'bind2': 'value2b'} ]

        see: http://www.gingerandjohn.com/archives/2004/02/26/cx_oracle-executemany-example/

        Can't executemany() selects - so do each combination of binds here instead.
        This will return a list of sqlalchemy.engine.base.ResultProxy object's
        one for each set of binds.

        returns a list of sqlalchemy.engine.base.ResultProxy objects
        """

        s = s.strip()
        if s.lower().endswith('select', 0, 6):
            """
            Trying to select many
            """
            if returnCursor:
                result = []
                for bind in b:
                    result.append(connection.execute(s, bind))
            else:
                result = ResultSet()
                for bind in b:
                    resultproxy = connection.execute(s, bind)
                    result.add(resultproxy)
                    resultproxy.close()

            return self.makelist(result)

        """
        Now inserting or updating many
        """
        result = connection.execute(s, b)
        return self.makelist(result)
Пример #8
0
    def testFullResultSet(self):
        """
        Function to test all the functionality of the ResultSet

        """

        #ResultSet is a very simple function.  This function should
        #create a ResultSet, fill it with data, and then read it
        #out, all in one go.


        testSet = ResultSet()

        testDict = {'column1': 'value1', 'column2':'value2'}
        binds    = [ {'column1':'value3a', 'column2': 'value2a'},
                     {'column1':'value3b', 'column2': 'value2b'},
                     {'column1':'value3c', 'column2': 'value2c'}]


        self.myThread.dbi.processData('insert into test_tablec (column1, column2) values (:column1, :column2)', testDict)
        self.myThread.dbi.processData('insert into test_tablec (column1, column2) values (:column1, :column2)', binds)
        testProxy = self.myThread.dbi.connection().execute('select * from test_tablec')

        #import pdb
        #pdb.set_trace()
        testSet.add(testProxy)

        #Test to make sure fetchone and fetchall both work
        self.assertEqual(str(testSet.fetchone()[0]), 'value1')
        self.assertEqual(str(testSet.fetchall()[-1][1]), 'value2c')
Пример #9
0
 def testRowCount(self):
     
     testSet = ResultSet()
     insertProxy = self.myThread.dbi.connection().execute("insert into test (bind1, bind2) values ('a', 'b')")
     testSet.add(insertProxy)
     self.assertEqual(testSet.rowcount, 1)    
     
     updateProxy = self.myThread.dbi.connection().execute("update test set bind1 = 'c'")
     testSet.add(updateProxy)
     self.assertEqual(testSet.rowcount, 2)
     
     updateProxy = self.myThread.dbi.connection().execute("update test set bind1 = 'c' where bind1 = 'a'")
     testSet.add(updateProxy)
     self.assertEqual(testSet.rowcount, 2)
     
     insertProxy = self.myThread.dbi.connection().execute("insert into test (bind1, bind2) values ('a', 'b')")
     testSet.add(insertProxy)
     self.assertEqual(testSet.rowcount, 3)
     
     selectProxy = self.myThread.dbi.connection().execute("select * from test")
     testSet.add(selectProxy)
     self.assertEqual(testSet.rowcount, 5)
     
     selectProxy = self.myThread.dbi.connection().execute("delete from test")
     testSet.add(selectProxy)
     self.assertEqual(testSet.rowcount, 7)   
Пример #10
0
    def testRowCount(self):

        testSet = ResultSet()
        insertProxy = self.myThread.dbi.connection().execute(
            "insert into test_tablec (column1, column2) values ('a', 'b')")
        testSet.add(insertProxy)
        self.assertEqual(testSet.rowcount, 1)

        updateProxy = self.myThread.dbi.connection().execute(
            "update test_tablec set column1 = 'c'")
        testSet.add(updateProxy)
        self.assertEqual(testSet.rowcount, 2)

        updateProxy = self.myThread.dbi.connection().execute(
            "update test_tablec set column1 = 'c' where column1 = 'a'")
        testSet.add(updateProxy)
        self.assertEqual(testSet.rowcount, 2)

        insertProxy = self.myThread.dbi.connection().execute(
            "insert into test_tablec (column1, column2) values ('a', 'b')")
        testSet.add(insertProxy)
        self.assertEqual(testSet.rowcount, 3)

        selectProxy = self.myThread.dbi.connection().execute(
            "select * from test_tablec")
        testSet.add(selectProxy)
        self.assertEqual(testSet.rowcount, 5)

        selectProxy = self.myThread.dbi.connection().execute(
            "delete from test_tablec")
        testSet.add(selectProxy)
        self.assertEqual(testSet.rowcount, 7)