⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dbapi20.py

📁 python联接mysql驱动 python联接mysql驱动
💻 PY
📖 第 1 页 / 共 3 页
字号:
                )            self.assertEqual(cur.description[0][1],self.driver.STRING,                'cursor.description[x][1] must return column type. Got %r'                    % cur.description[0][1]                )            # Make sure self.description gets reset            self.executeDDL2(cur)            self.assertEqual(cur.description,None,                'cursor.description not being set to None when executing '                'no-result statements (eg. DDL)'                )        finally:            con.close()    def test_rowcount(self):        con = self._connect()        try:            cur = con.cursor()            self.executeDDL1(cur)            self.assertEqual(cur.rowcount,-1,                'cursor.rowcount should be -1 after executing no-result '                'statements'                )            cur.execute("insert into %sbooze values ('Victoria Bitter')" % (                self.table_prefix                ))            self.failUnless(cur.rowcount in (-1,1),                'cursor.rowcount should == number or rows inserted, or '                'set to -1 after executing an insert statement'                )            cur.execute("select name from %sbooze" % self.table_prefix)            self.failUnless(cur.rowcount in (-1,1),                'cursor.rowcount should == number of rows returned, or '                'set to -1 after executing a select statement'                )            self.executeDDL2(cur)            self.assertEqual(cur.rowcount,-1,                'cursor.rowcount not being reset to -1 after executing '                'no-result statements'                )        finally:            con.close()    lower_func = 'lower'    def test_callproc(self):        con = self._connect()        try:            cur = con.cursor()            if self.lower_func and hasattr(cur,'callproc'):                r = cur.callproc(self.lower_func,('FOO',))                self.assertEqual(len(r),1)                self.assertEqual(r[0],'FOO')                r = cur.fetchall()                self.assertEqual(len(r),1,'callproc produced no result set')                self.assertEqual(len(r[0]),1,                    'callproc produced invalid result set'                    )                self.assertEqual(r[0][0],'foo',                    'callproc produced invalid results'                    )        finally:            con.close()    def test_close(self):        con = self._connect()        try:            cur = con.cursor()        finally:            con.close()        # cursor.execute should raise an Error if called after connection        # closed        self.assertRaises(self.driver.Error,self.executeDDL1,cur)        # connection.commit should raise an Error if called after connection'        # closed.'        self.assertRaises(self.driver.Error,con.commit)        # connection.close should raise an Error if called more than once        self.assertRaises(self.driver.Error,con.close)    def test_execute(self):        con = self._connect()        try:            cur = con.cursor()            self._paraminsert(cur)        finally:            con.close()    def _paraminsert(self,cur):        self.executeDDL1(cur)        cur.execute("insert into %sbooze values ('Victoria Bitter')" % (            self.table_prefix            ))        self.failUnless(cur.rowcount in (-1,1))        if self.driver.paramstyle == 'qmark':            cur.execute(                'insert into %sbooze values (?)' % self.table_prefix,                ("Cooper's",)                )        elif self.driver.paramstyle == 'numeric':            cur.execute(                'insert into %sbooze values (:1)' % self.table_prefix,                ("Cooper's",)                )        elif self.driver.paramstyle == 'named':            cur.execute(                'insert into %sbooze values (:beer)' % self.table_prefix,                 {'beer':"Cooper's"}                )        elif self.driver.paramstyle == 'format':            cur.execute(                'insert into %sbooze values (%%s)' % self.table_prefix,                ("Cooper's",)                )        elif self.driver.paramstyle == 'pyformat':            cur.execute(                'insert into %sbooze values (%%(beer)s)' % self.table_prefix,                {'beer':"Cooper's"}                )        else:            self.fail('Invalid paramstyle')        self.failUnless(cur.rowcount in (-1,1))        cur.execute('select name from %sbooze' % self.table_prefix)        res = cur.fetchall()        self.assertEqual(len(res),2,'cursor.fetchall returned too few rows')        beers = [res[0][0],res[1][0]]        beers.sort()        self.assertEqual(beers[0],"Cooper's",            'cursor.fetchall retrieved incorrect data, or data inserted '            'incorrectly'            )        self.assertEqual(beers[1],"Victoria Bitter",            'cursor.fetchall retrieved incorrect data, or data inserted '            'incorrectly'            )    def test_executemany(self):        con = self._connect()        try:            cur = con.cursor()            self.executeDDL1(cur)            largs = [ ("Cooper's",) , ("Boag's",) ]            margs = [ {'beer': "Cooper's"}, {'beer': "Boag's"} ]            if self.driver.paramstyle == 'qmark':                cur.executemany(                    'insert into %sbooze values (?)' % self.table_prefix,                    largs                    )            elif self.driver.paramstyle == 'numeric':                cur.executemany(                    'insert into %sbooze values (:1)' % self.table_prefix,                    largs                    )            elif self.driver.paramstyle == 'named':                cur.executemany(                    'insert into %sbooze values (:beer)' % self.table_prefix,                    margs                    )            elif self.driver.paramstyle == 'format':                cur.executemany(                    'insert into %sbooze values (%%s)' % self.table_prefix,                    largs                    )            elif self.driver.paramstyle == 'pyformat':                cur.executemany(                    'insert into %sbooze values (%%(beer)s)' % (                        self.table_prefix                        ),                    margs                    )            else:                self.fail('Unknown paramstyle')            self.failUnless(cur.rowcount in (-1,2),                'insert using cursor.executemany set cursor.rowcount to '                'incorrect value %r' % cur.rowcount                )            cur.execute('select name from %sbooze' % self.table_prefix)            res = cur.fetchall()            self.assertEqual(len(res),2,                'cursor.fetchall retrieved incorrect number of rows'                )            beers = [res[0][0],res[1][0]]            beers.sort()            self.assertEqual(beers[0],"Boag's",'incorrect data retrieved')            self.assertEqual(beers[1],"Cooper's",'incorrect data retrieved')        finally:            con.close()    def test_fetchone(self):        con = self._connect()        try:            cur = con.cursor()            # cursor.fetchone should raise an Error if called before            # executing a select-type query            self.assertRaises(self.driver.Error,cur.fetchone)            # cursor.fetchone should raise an Error if called after            # executing a query that cannnot return rows            self.executeDDL1(cur)            self.assertRaises(self.driver.Error,cur.fetchone)            cur.execute('select name from %sbooze' % self.table_prefix)            self.assertEqual(cur.fetchone(),None,                'cursor.fetchone should return None if a query retrieves '                'no rows'                )            self.failUnless(cur.rowcount in (-1,0))            # cursor.fetchone should raise an Error if called after            # executing a query that cannnot return rows            cur.execute("insert into %sbooze values ('Victoria Bitter')" % (                self.table_prefix                ))            self.assertRaises(self.driver.Error,cur.fetchone)            cur.execute('select name from %sbooze' % self.table_prefix)            r = cur.fetchone()            self.assertEqual(len(r),1,                'cursor.fetchone should have retrieved a single row'                )            self.assertEqual(r[0],'Victoria Bitter',                'cursor.fetchone retrieved incorrect data'                )            self.assertEqual(cur.fetchone(),None,                'cursor.fetchone should return None if no more rows available'                )            self.failUnless(cur.rowcount in (-1,1))        finally:            con.close()    samples = [        'Carlton Cold',        'Carlton Draft',        'Mountain Goat',        'Redback',        'Victoria Bitter',        'XXXX'        ]    def _populate(self):        ''' Return a list of sql commands to setup the DB for the fetch            tests.        '''        populate = [            "insert into %sbooze values ('%s')" % (self.table_prefix,s)                 for s in self.samples            ]        return populate    def test_fetchmany(self):        con = self._connect()        try:            cur = con.cursor()            # cursor.fetchmany should raise an Error if called without            #issuing a query            self.assertRaises(self.driver.Error,cur.fetchmany,4)            self.executeDDL1(cur)            for sql in self._populate():                cur.execute(sql)            cur.execute('select name from %sbooze' % self.table_prefix)            r = cur.fetchmany()            self.assertEqual(len(r),1,                'cursor.fetchmany retrieved incorrect number of rows, '                'default of arraysize is one.'                )            cur.arraysize=10            r = cur.fetchmany(3) # Should get 3 rows            self.assertEqual(len(r),3,                'cursor.fetchmany retrieved incorrect number of rows'                )            r = cur.fetchmany(4) # Should get 2 more            self.assertEqual(len(r),2,                'cursor.fetchmany retrieved incorrect number of rows'                )            r = cur.fetchmany(4) # Should be an empty sequence            self.assertEqual(len(r),0,                'cursor.fetchmany should return an empty sequence after '

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -