示例#1
0
 def test_connect(self):
     c = ocpgdb.connect(**scratch_db)
     self.failUnless(c.fileno() >= 0)
     self.failUnless(isinstance(c.conninfo, str))
     self.assertEqual(c.notices, [])
     self.failUnless(isinstance(c.host, str))
     self.failUnless(isinstance(c.port, int))
     self.failUnless(isinstance(c.db, str))
     self.failUnless(isinstance(c.user, str))
     self.failUnless(isinstance(c.password, str))
     self.failUnless(isinstance(c.options, str))
     self.failUnless(isinstance(c.protocolVersion, int))
     self.failUnless(c.protocolVersion >= 2)
     self.failUnless(isinstance(c.serverVersion, int))
     self.failUnless(c.serverVersion >= 70000)
     self.failUnless(not c.closed)
     c.close()
     self.failUnless(c.closed)
     self.assertRaises(ocpgdb.ProgrammingError, getattr, c, 'host')
     self.assertRaises(ocpgdb.ProgrammingError, getattr, c, 'port')
     self.assertRaises(ocpgdb.ProgrammingError, getattr, c, 'db')
     self.assertRaises(ocpgdb.ProgrammingError, getattr, c, 'user')
     self.assertRaises(ocpgdb.ProgrammingError, getattr, c, 'password')
     self.assertRaises(ocpgdb.ProgrammingError, getattr, c, 'options')
     self.assertRaises(ocpgdb.ProgrammingError, c.fileno)
     self.assertRaises(ocpgdb.ProgrammingError, getattr, c, 'protocolVersion')
     self.assertRaises(ocpgdb.ProgrammingError, getattr, c, 'serverVersion')
     c.close()
示例#2
0
    def test_py_dateime(self):
        import datetime
        db = ocpgdb.connect(**scratch_db)
        db.use_python_datetime()
        try:
            self._test(db, None, 'timestamp')
            self._test(db, datetime.datetime(2007, 5, 8, 15, 9, 32, 23),
                       'timestamp')
            self._test(db, datetime.datetime(1900, 5, 8, 15, 9, 32, 23),
                       'timestamp')
            self._test(db, datetime.datetime(2200, 5, 8, 15, 9, 32, 23),
                       'timestamp')

            self._test(db, None, 'time')
            self._test(db, datetime.time(15, 9, 32, 23), 'time')
            self._test(db, datetime.time(0, 0, 0, 0), 'time')
            self._test(db, datetime.time(23, 59, 59, 999), 'time')

            self._test(db, None, 'date')
            self._test(db, datetime.date(2007, 5, 8), 'date')
            self._test(db, datetime.date(1900, 5, 8), 'date')
            self._test(db, datetime.date(2200, 5, 8), 'date')

            self._test(db, None, 'interval')
            self._test(db, datetime.timedelta(0, 0, 0, 0, 0), 'interval')
            self._test(db, datetime.timedelta(0, 0, 0, 0, 0), 'interval')
            self._test(db, datetime.timedelta(0, 59, 0, 0, 59, 23), 'interval')
            self._test(db, datetime.timedelta(seconds=-1), 'interval')
            self._test(db, datetime.timedelta(days=-1), 'interval')
            self._test(db, datetime.timedelta(days=-1, seconds=1), 'interval')
            self._test(db, datetime.timedelta(days=-1, seconds=-1), 'interval')
        finally:
            db.close()
示例#3
0
 def test_connect(self):
     c = ocpgdb.connect(**scratch_db)
     self.failUnless(c.fileno() >= 0)
     self.failUnless(isinstance(c.conninfo, str))
     self.assertEqual(c.notices, [])
     self.failUnless(isinstance(c.host, str))
     self.failUnless(isinstance(c.port, int))
     self.failUnless(isinstance(c.db, str))
     self.failUnless(isinstance(c.user, str))
     self.failUnless(isinstance(c.password, str))
     self.failUnless(isinstance(c.options, str))
     self.failUnless(isinstance(c.protocolVersion, int))
     self.failUnless(c.protocolVersion >= 2)
     self.failUnless(isinstance(c.serverVersion, int))
     self.failUnless(c.serverVersion >= 70000)
     self.failUnless(not c.closed)
     self.assertEqual(c.transactionStatus, ocpgdb.TRANS_IDLE)
     old_verb = c.setErrorVerbosity(ocpgdb.ERRORS_VERBOSE)
     self.assertEqual(old_verb, ocpgdb.ERRORS_DEFAULT)
     old_verb = c.setErrorVerbosity(ocpgdb.ERRORS_DEFAULT)
     self.assertEqual(old_verb, ocpgdb.ERRORS_VERBOSE)
     c.close()
     self.failUnless(c.closed)
     self.assertRaises(ocpgdb.ProgrammingError, getattr, c, 'host')
     self.assertRaises(ocpgdb.ProgrammingError, getattr, c, 'port')
     self.assertRaises(ocpgdb.ProgrammingError, getattr, c, 'db')
     self.assertRaises(ocpgdb.ProgrammingError, getattr, c, 'user')
     self.assertRaises(ocpgdb.ProgrammingError, getattr, c, 'password')
     self.assertRaises(ocpgdb.ProgrammingError, getattr, c, 'options')
     self.assertRaises(ocpgdb.ProgrammingError, c.fileno)
     self.assertRaises(ocpgdb.ProgrammingError, getattr, c, 'protocolVersion')
     self.assertRaises(ocpgdb.ProgrammingError, getattr, c, 'serverVersion')
     self.assertRaises(ocpgdb.ProgrammingError, c.close)
示例#4
0
 def runTest(self):
     self.assertHasAttr(ocpgdb, 'Binary')
     self.assertHasAttr(ocpgdb, 'Date')
     self.assertHasAttr(ocpgdb, 'Time')
     self.assertHasAttr(ocpgdb, 'Timestamp')
     self.assertHasAttr(ocpgdb, 'DateFromTicks')
     self.assertHasAttr(ocpgdb, 'TimestampFromTicks')
     self.assertHasAttr(ocpgdb, 'TimeFromTicks')
     self.assertHasAttr(ocpgdb, 'STRING')
     self.assertHasAttr(ocpgdb, 'BINARY')
     self.assertHasAttr(ocpgdb, 'NUMBER')
     self.assertHasAttr(ocpgdb, 'DATETIME')
     self.assertHasAttr(ocpgdb, 'ROWID')
     self.db = ocpgdb.connect(**scratch_db)
     self.assertExecute(None, 'select null')
     self.assertRoundTrip(ocpgdb.DATETIME, ocpgdb.Date(2010,5,11))
     self.assertRoundTrip(ocpgdb.DATETIME, ocpgdb.Time(13,14,15))
     self.assertRoundTrip(ocpgdb.DATETIME, 
                          ocpgdb.Timestamp(2010,5,11, 13,14,15))
     self.assertRoundTrip(ocpgdb.DATETIME, 
                          ocpgdb.DateFromTicks(1273547655))
     self.assertRoundTrip(ocpgdb.DATETIME, 
                          ocpgdb.TimeFromTicks(1273547655))
     self.assertRoundTrip(ocpgdb.DATETIME, 
                          ocpgdb.TimestampFromTicks(1273547655))
     self.assertRoundTrip(ocpgdb.BINARY, ocpgdb.Binary('abc\0'))
     self.assertRoundTrip(ocpgdb.STRING, 'abc')
     self.assertRoundTrip(ocpgdb.NUMBER, 1)
     self.assertRoundTrip(ocpgdb.NUMBER, 1.1)
示例#5
0
 def test_connect(self):
     c = ocpgdb.connect(**scratch_db)
     self.failUnless(c.fileno() >= 0)
     self.failUnless(isinstance(c.conninfo, str))
     self.assertEqual(c.notices, [])
     self.failUnless(isinstance(c.host, str))
     self.failUnless(isinstance(c.port, int))
     self.failUnless(isinstance(c.db, str))
     self.failUnless(isinstance(c.user, str))
     self.failUnless(isinstance(c.password, str))
     self.failUnless(isinstance(c.options, str))
     self.failUnless(isinstance(c.protocolVersion, int))
     self.failUnless(c.protocolVersion >= 2)
     self.failUnless(isinstance(c.serverVersion, int))
     self.failUnless(c.serverVersion >= 70000)
     self.failUnless(not c.closed)
     c.close()
     self.failUnless(c.closed)
     self.assertRaises(ocpgdb.ProgrammingError, getattr, c, 'host')
     self.assertRaises(ocpgdb.ProgrammingError, getattr, c, 'port')
     self.assertRaises(ocpgdb.ProgrammingError, getattr, c, 'db')
     self.assertRaises(ocpgdb.ProgrammingError, getattr, c, 'user')
     self.assertRaises(ocpgdb.ProgrammingError, getattr, c, 'password')
     self.assertRaises(ocpgdb.ProgrammingError, getattr, c, 'options')
     self.assertRaises(ocpgdb.ProgrammingError, c.fileno)
     self.assertRaises(ocpgdb.ProgrammingError, getattr, c,
                       'protocolVersion')
     self.assertRaises(ocpgdb.ProgrammingError, getattr, c, 'serverVersion')
     c.close()
示例#6
0
 def test_result(self):
     c = ocpgdb.connect(**scratch_db)
     # Null command
     result = ocpgdb.PgConnection.execute(c, '', ())
     self.assertEqual(result.status, ocpgdb.PGRES_EMPTY_QUERY)
     # Error command
     result = ocpgdb.PgConnection.execute(c, 'nonsense_command', ())
     self.assertEqual(result.status, ocpgdb.PGRES_FATAL_ERROR)
     self.assertEqual(result.errorMessage, 
         'ERROR:  syntax error at or near "nonsense_command"\n'
         'LINE 1: nonsense_command\n'
         '        ^\n')
     self.assertEqual(result.errorField(ocpgdb.DIAG_SEVERITY), 'ERROR')
     self.assertEqual(result.errorField(ocpgdb.DIAG_SQLSTATE), '42601')
     self.assertEqual(result.errorField(ocpgdb.DIAG_MESSAGE_PRIMARY), 
                         'syntax error at or near "nonsense_command"')
     self.assertEqual(result.errorField(ocpgdb.DIAG_MESSAGE_DETAIL), None)
     self.assertEqual(result.errorField(ocpgdb.DIAG_MESSAGE_HINT), None)
     self.assertEqual(result.errorField(ocpgdb.DIAG_STATEMENT_POSITION), '1')
     self.assertEqual(result.errorField(ocpgdb.DIAG_INTERNAL_POSITION), None)
     self.assertEqual(result.errorField(ocpgdb.DIAG_INTERNAL_QUERY), None)
     self.assertEqual(result.errorField(ocpgdb.DIAG_CONTEXT), None)
     # Simple select
     result = ocpgdb.PgConnection.execute(c, 'select null', ())
     self.assertEqual(result.status, ocpgdb.PGRES_TUPLES_OK)
     rows = list(result)
     self.assertEqual(len(rows), 1)
     row = rows[0]
     self.assertEqual(len(row), 1)
     cell = row[0]
     self.assertEqual(cell.format, 1)
     self.assertEqual(cell.modifier, -1)
     self.assertEqual(cell.name, '?column?')
     self.assertEqual(cell.type, ocpgdb.pgoid.unknown)
     self.assertEqual(cell.value, None)
示例#7
0
 def test_result(self):
     c = ocpgdb.connect(**scratch_db)
     # Null command
     result = ocpgdb.PgConnection.execute(c, '', ())
     self.assertEqual(result.status, ocpgdb.PGRES_EMPTY_QUERY)
     # Error command
     result = ocpgdb.PgConnection.execute(c, 'nonsense_command', ())
     self.assertEqual(result.status, ocpgdb.PGRES_FATAL_ERROR)
     self.assertEqual(result.errorMessage, 
         'ERROR:  syntax error at or near "nonsense_command"\n'
         'LINE 1: nonsense_command\n'
         '        ^\n')
     self.assertEqual(result.errorField(ocpgdb.DIAG_SEVERITY), 'ERROR')
     self.assertEqual(result.errorField(ocpgdb.DIAG_SQLSTATE), '42601')
     self.assertEqual(result.errorField(ocpgdb.DIAG_MESSAGE_PRIMARY), 
                         'syntax error at or near "nonsense_command"')
     self.assertEqual(result.errorField(ocpgdb.DIAG_MESSAGE_DETAIL), None)
     self.assertEqual(result.errorField(ocpgdb.DIAG_MESSAGE_HINT), None)
     self.assertEqual(result.errorField(ocpgdb.DIAG_STATEMENT_POSITION), '1')
     self.assertEqual(result.errorField(ocpgdb.DIAG_INTERNAL_POSITION), None)
     self.assertEqual(result.errorField(ocpgdb.DIAG_INTERNAL_QUERY), None)
     self.assertEqual(result.errorField(ocpgdb.DIAG_CONTEXT), None)
     # Simple select
     result = ocpgdb.PgConnection.execute(c, 'select null', ())
     self.assertEqual(result.status, ocpgdb.PGRES_TUPLES_OK)
     rows = list(result)
     self.assertEqual(len(rows), 1)
     row = rows[0]
     self.assertEqual(len(row), 1)
     cell = row[0]
     self.assertEqual(cell.format, 1)
     self.assertEqual(cell.modifier, -1)
     self.assertEqual(cell.name, '?column?')
     self.assertEqual(cell.type, ocpgdb.pgoid.unknown)
     self.assertEqual(cell.value, None)
示例#8
0
 def test_connect(self):
     c = ocpgdb.connect(**scratch_db)
     self.assertTrue(c.fileno() >= 0)
     self.assertTrue(isinstance(c.conninfo, str))
     self.assertEqual(c.notices, [])
     self.assertTrue(isinstance(c.host, str))
     self.assertTrue(isinstance(c.port, int))
     self.assertTrue(isinstance(c.db, str))
     self.assertTrue(isinstance(c.user, str))
     self.assertTrue(isinstance(c.password, str))
     self.assertTrue(isinstance(c.options, str))
     self.assertTrue(isinstance(c.protocolVersion, int))
     self.assertTrue(c.protocolVersion >= 2)
     self.assertTrue(isinstance(c.serverVersion, int))
     self.assertTrue(c.serverVersion >= 70000)
     self.assertTrue(not c.closed)
     self.assertEqual(c.transactionStatus, ocpgdb.TRANS_IDLE)
     old_verb = c.setErrorVerbosity(ocpgdb.ERRORS_VERBOSE)
     self.assertEqual(old_verb, ocpgdb.ERRORS_DEFAULT)
     old_verb = c.setErrorVerbosity(ocpgdb.ERRORS_DEFAULT)
     self.assertEqual(old_verb, ocpgdb.ERRORS_VERBOSE)
     c.close()
     self.assertTrue(c.closed)
     self.assertRaises(ocpgdb.ProgrammingError, getattr, c, 'host')
     self.assertRaises(ocpgdb.ProgrammingError, getattr, c, 'port')
     self.assertRaises(ocpgdb.ProgrammingError, getattr, c, 'db')
     self.assertRaises(ocpgdb.ProgrammingError, getattr, c, 'user')
     self.assertRaises(ocpgdb.ProgrammingError, getattr, c, 'password')
     self.assertRaises(ocpgdb.ProgrammingError, getattr, c, 'options')
     self.assertRaises(ocpgdb.ProgrammingError, c.fileno)
     self.assertRaises(ocpgdb.ProgrammingError, getattr, c, 'protocolVersion')
     self.assertRaises(ocpgdb.ProgrammingError, getattr, c, 'serverVersion')
     self.assertRaises(ocpgdb.ProgrammingError, c.close)
示例#9
0
    def test_py_dateime(self):
        import datetime
        db = ocpgdb.connect(**scratch_db)
        db.use_python_datetime()
        try:
            self._test(db, None, 'timestamp')
            self._test(db, datetime.datetime(2007,5,8,15,9,32,23), 'timestamp')
            self._test(db, datetime.datetime(1900,5,8,15,9,32,23), 'timestamp')
            self._test(db, datetime.datetime(2200,5,8,15,9,32,23), 'timestamp')

            self._test(db, None, 'time')
            self._test(db, datetime.time(15,9,32,23), 'time')
            self._test(db, datetime.time(0,0,0,0), 'time')
            self._test(db, datetime.time(23,59,59,999), 'time')

            self._test(db, None, 'date')
            self._test(db, datetime.date(2007,5,8), 'date')
            self._test(db, datetime.date(1900,5,8), 'date')
            self._test(db, datetime.date(2200,5,8), 'date')

            self._test(db, None, 'interval')
            self._test(db, datetime.timedelta(0,0,0,0,0), 'interval')
            self._test(db, datetime.timedelta(0,0,0,0,0), 'interval')
            self._test(db, datetime.timedelta(0,59,0,0,59,23), 'interval')
            self._test(db, datetime.timedelta(seconds=-1), 'interval')
            self._test(db, datetime.timedelta(days=-1), 'interval')
            self._test(db, datetime.timedelta(days=-1, seconds=1), 'interval')
            self._test(db, datetime.timedelta(days=-1, seconds=-1), 'interval')
        finally:
            db.close()
示例#10
0
 def runTest(self):
     self.assertHasAttr(ocpgdb, 'Binary')
     self.assertHasAttr(ocpgdb, 'Date')
     self.assertHasAttr(ocpgdb, 'Time')
     self.assertHasAttr(ocpgdb, 'Timestamp')
     self.assertHasAttr(ocpgdb, 'DateFromTicks')
     self.assertHasAttr(ocpgdb, 'TimestampFromTicks')
     self.assertHasAttr(ocpgdb, 'TimeFromTicks')
     self.assertHasAttr(ocpgdb, 'STRING')
     self.assertHasAttr(ocpgdb, 'BINARY')
     self.assertHasAttr(ocpgdb, 'NUMBER')
     self.assertHasAttr(ocpgdb, 'DATETIME')
     self.assertHasAttr(ocpgdb, 'ROWID')
     self.db = ocpgdb.connect(**scratch_db)
     self.assertExecute(None, 'select null')
     self.assertRoundTrip(ocpgdb.DATETIME, ocpgdb.Date(2010,5,11))
     self.assertRoundTrip(ocpgdb.DATETIME, ocpgdb.Time(13,14,15))
     self.assertRoundTrip(ocpgdb.DATETIME, 
                          ocpgdb.Timestamp(2010,5,11, 13,14,15))
     self.assertRoundTrip(ocpgdb.DATETIME, 
                          ocpgdb.DateFromTicks(1273547655))
     self.assertRoundTrip(ocpgdb.DATETIME, 
                          ocpgdb.TimeFromTicks(1273547655))
     self.assertRoundTrip(ocpgdb.DATETIME, 
                          ocpgdb.TimestampFromTicks(1273547655))
     self.assertRoundTrip(ocpgdb.BINARY, ocpgdb.Binary('abc\0'))
     self.assertRoundTrip(ocpgdb.STRING, 'abc')
     self.assertRoundTrip(ocpgdb.NUMBER, 1)
     self.assertRoundTrip(ocpgdb.NUMBER, 1.1)
示例#11
0
def main(dbname):
    db = dbapi.connect(database=dbname)
    #tally(yield_cases(db))
    seen_tags, cases_tags = preproc(yield_cases(db))

    tag_ids = make_tags(db, seen_tags)
    tag_cases(db, tag_ids, cases_tags)
    db.commit()
示例#12
0
 def test_bool(self):
     db = ocpgdb.connect(**scratch_db)
     try:
         self._test(db, None, 'bool')
         self._test(db, True, 'bool')
         self._test(db, False, 'bool')
     finally:
         db.close()
示例#13
0
 def test_bool(self):
     db = ocpgdb.connect(**scratch_db)
     try:
         self._test(db, None, 'bool')
         self._test(db, True, 'bool')
         self._test(db, False, 'bool')
     finally:
         db.close()
示例#14
0
 def test_bytea(self):
     db = ocpgdb.connect(**scratch_db)
     try:
         self._test(db, None, 'bytea')
         self._test(db, '', 'bytea')
         data = ocpgdb.bytea(''.join([chr(i) for i in range(256)]))
         self._test(db, data, 'bytea')
     finally:
         db.close()
示例#15
0
 def test_bytea(self):
     db = ocpgdb.connect(**scratch_db)
     try:
         self._test(db, None, 'bytea')
         self._test(db, '', 'bytea')
         data = ocpgdb.bytea(''.join([chr(i) for i in range(256)]))
         self._test(db, data, 'bytea')
     finally:
         db.close()
示例#16
0
    def test_decimal(self):
        import decimal
        db = ocpgdb.connect(**scratch_db)
        try:
            self._test(db, None, 'numeric')
            self._test(db, decimal.Decimal('0'), 'numeric')
            self._test(db, decimal.Decimal('0.0000'), 'numeric')
            self._test(db, decimal.Decimal('0.000000000000000000000000000000000001'), 'numeric')
#            self._test(db, decimal.Decimal('NaN'), 'numeric')
        finally:
            db.close()
示例#17
0
 def test_float(self):
     db = ocpgdb.connect(**scratch_db)
     try:
         self._test(db, None, 'float')
         self._test(db, 0.0, 'float')
         self._test(db, 1.0, 'float')
         self._test(db, 1e240, 'float')
         self._test(db, -1e240, 'float')
         self._test(db, 1e-240, 'float')
         self._test(db, -1e-240, 'float')
     finally:
         db.close()
示例#18
0
 def test_float(self):
     db = ocpgdb.connect(**scratch_db)
     try:
         self._test(db, None, 'float')
         self._test(db, 0.0, 'float')
         self._test(db, 1.0, 'float')
         self._test(db, 1e240, 'float')
         self._test(db, -1e240, 'float')
         self._test(db, 1e-240, 'float')
         self._test(db, -1e-240, 'float')
     finally:
         db.close()
示例#19
0
 def runTest(self):
     db = ocpgdb.connect(**scratch_db)
     self.assertHasAttr(db, 'close')
     self.assertHasAttr(db, 'commit')
     self.assertHasAttr(db, 'rollback')
     self.assertHasAttr(db, 'cursor')
     # After a close, all methods should raise an Error subclass
     db.close()
     self.assertRaises(ocpgdb.Error, db.close)
     self.assertRaises(ocpgdb.Error, db.rollback)
     self.assertRaises(ocpgdb.Error, db.commit)
     self.assertRaises(ocpgdb.Error, db.cursor)
示例#20
0
 def runTest(self):
     db = ocpgdb.connect(**scratch_db)
     self.assertHasAttr(db, 'close')
     self.assertHasAttr(db, 'commit')
     self.assertHasAttr(db, 'rollback')
     self.assertHasAttr(db, 'cursor')
     # After a close, all methods should raise an Error subclass
     db.close()
     self.assertRaises(ocpgdb.Error, db.close)
     self.assertRaises(ocpgdb.Error, db.rollback)
     self.assertRaises(ocpgdb.Error, db.commit)
     self.assertRaises(ocpgdb.Error, db.cursor)
示例#21
0
def main(dbname):
    db = ocpgdb.connect(database=dbname, use_mx_datetime=True)
    persons = Records()
    for row in ContactQuery().query(db):
        persons.add(row)
    for row in CaseQuery().query(db):
        persons.add(row)

    writer = csv.writer(sys.stdout)
    writer.writerow(Record.cols)
    for record in persons.sorted():
        writer.writerow(record.values())
示例#22
0
    def test_decimal(self):
        import decimal
        db = ocpgdb.connect(**scratch_db)
        try:
            self._test(db, None, 'numeric')
            self._test(db, decimal.Decimal('0'), 'numeric')
            self._test(db, decimal.Decimal('0.0000'), 'numeric')
            self._test(
                db, decimal.Decimal('0.000000000000000000000000000000000001'),
                'numeric')


#            self._test(db, decimal.Decimal('NaN'), 'numeric')
        finally:
            db.close()
示例#23
0
    def test_int(self):
        db = ocpgdb.connect(**scratch_db)
        try:
            self._test(db, None, 'int')
            self._test(db, 1, 'int')
            self._test(db, sys.maxint, 'int')
            self._test(db, -sys.maxint, 'int')

            self._test(db, None, 'int2')
            self._test(db, 1, 'int2')
            self.assertRaises(ocpgdb.OperationalError, self._test, 
                                db, sys.maxint, 'int2')
            self.assertRaises(ocpgdb.OperationalError, self._test, 
                                db, -sys.maxint, 'int2')

            self._test(db, None, 'int8')
            self._test(db, 1, 'int8')
            self._test(db, sys.maxint * sys.maxint, 'int8')
            self._test(db, -(sys.maxint * sys.maxint), 'int8')
        finally:
            db.close()
示例#24
0
    def test_int(self):
        db = ocpgdb.connect(**scratch_db)
        try:
            self._test(db, None, 'int')
            self._test(db, 1, 'int')
            self._test(db, sys.maxint, 'int')
            self._test(db, -sys.maxint, 'int')

            self._test(db, None, 'int2')
            self._test(db, 1, 'int2')
            self.assertRaises(ocpgdb.OperationalError, self._test, db,
                              sys.maxint, 'int2')
            self.assertRaises(ocpgdb.OperationalError, self._test, db,
                              -sys.maxint, 'int2')

            self._test(db, None, 'int8')
            self._test(db, 1, 'int8')
            self._test(db, sys.maxint * sys.maxint, 'int8')
            self._test(db, -(sys.maxint * sys.maxint), 'int8')
        finally:
            db.close()
示例#25
0
    def test_str(self):
        db = ocpgdb.connect(**scratch_db)
        try:
            self._test(db, None, 'text')
            self._test(db, '', 'text')
            self._test(db, '\'\"\x01', 'text')
            self._test(db, 'A' * 65536, 'text')

            self._test(db, None, 'varchar')
            self._test(db, '', 'varchar')
            self._test(db, '\'\"\x01', 'varchar')
            self._test(db, 'A' * 65536, 'varchar')

            self._test(db, None, 'varchar(5)')
            self._test(db, '', 'varchar(5)')
            self._test(db, '\'\"\x01', 'varchar(5)')
            self._test(db, 'A' * 65536, 'varchar(5)', 'A' * 5)

            self._test(db, None, 'char(5)')
            self._test(db, '', 'char(5)', ' ' * 5)
            self._test(db, '\'\"\x01', 'char(5)', '\'\"\x01  ')
            self._test(db, 'A' * 65536, 'char(5)', 'A' * 5)
        finally:
            db.close()
示例#26
0
    def test_str(self):
        db = ocpgdb.connect(**scratch_db)
        try:
            self._test(db, None, 'text')
            self._test(db, '', 'text')
            self._test(db, '\'\"\x01', 'text')
            self._test(db, 'A' * 65536, 'text')

            self._test(db, None, 'varchar')
            self._test(db, '', 'varchar')
            self._test(db, '\'\"\x01', 'varchar')
            self._test(db, 'A' * 65536, 'varchar')

            self._test(db, None, 'varchar(5)')
            self._test(db, '', 'varchar(5)')
            self._test(db, '\'\"\x01', 'varchar(5)')
            self._test(db, 'A' * 65536, 'varchar(5)', 'A' * 5)

            self._test(db, None, 'char(5)')
            self._test(db, '', 'char(5)', ' ' * 5)
            self._test(db, '\'\"\x01', 'char(5)', '\'\"\x01  ')
            self._test(db, 'A' * 65536, 'char(5)', 'A' * 5)
        finally:
            db.close()
示例#27
0
 def runTest(self):
     db = ocpgdb.connect(**scratch_db)
     curs = db.cursor()
     # Make sure all the bits are there
     self.assertHasAttr(curs, 'description')
     self.assertHasAttr(curs, 'rowcount')
     #self.assertHasAttr(curs, 'callproc') # Optional
     self.assertHasAttr(curs, 'close')
     self.assertHasAttr(curs, 'execute')
     self.assertHasAttr(curs, 'executemany')
     self.assertHasAttr(curs, 'fetchone')
     self.assertHasAttr(curs, 'fetchmany')
     self.assertHasAttr(curs, 'fetchall')
     #self.assertHasAttr(curs, 'nextset') # Optional
     self.assertHasAttr(curs, 'arraysize')
     self.assertHasAttr(curs, 'setinputsizes') # Stub
     self.assertHasAttr(curs, 'setoutputsize') # Stub
     # Now test functionality
     self.assertRaises(ocpgdb.Error, curs.fetchone)
     self.assertEqual(curs.description, None)
     self.assertEqual(curs.rowcount, -1)
     # description
     curs.execute('select null')
     self.assertEqual(curs.description, 
         [('?column?', ocpgdb.pgoid.unknown, None, None, None, None, None)])
     self.assertEqual(curs.rowcount, -1)
     # execute
     curs.execute('select null')
     self.assertEqual(curs.fetchall(), [(None,)])
     curs.execute('select null', ())
     self.assertEqual(curs.fetchall(), [(None,)])
     curs.execute('select null', [])
     self.assertEqual(curs.fetchall(), [(None,)])
     curs.execute('select null', {})
     self.assertEqual(curs.fetchall(), [(None,)])
     curs.execute('select null, 1')
     self.assertEqual(curs.fetchall(), [(None, 1)])
     curs.execute('select %s::int, %s::int', (None, 1))
     self.assertEqual(curs.fetchall(), [(None, 1)])
     curs.execute('select %(a)s::int, %(b)s::int', dict(a=None, b=1))
     self.assertEqual(curs.fetchall(), [(None, 1)])
     self.assertRaises(ocpgdb.Error, curs.execute, 
                       'select %s::int, %s::int')
     db.rollback()
     self.assertRaises(ocpgdb.Error, curs.execute, 
                       'select %s::int, %s::int', None)
     db.rollback()
     self.assertRaises(TypeError, curs.execute, 
                       'select %s::int, %s::int', None, 1)
     db.rollback()
     self.assertRaises(ocpgdb.Error, curs.execute, 
                       'select %s::int, %s::int', (None, None, None))
     db.rollback()
     self.assertRaises(ocpgdb.Error, curs.execute, 
                       'select %s::int, %s::int', dict(a=None, b=1))
     db.rollback()
     self.assertRaises(ocpgdb.Error, curs.execute, 
                       'select %(a)s::int, %(b)s::int', (None, 1))
     db.rollback()
     curs.execute('create table x ( y text )')
     self.assertEqual(curs.rowcount, None)
     self.assertRaises(ocpgdb.Error, curs.fetchall)
     db.rollback()
     # executemany
     pass
     # fetchone
     curs.execute('select null')
     self.assertEqual(curs.fetchone(), (None,))
     self.assertEqual(curs.fetchone(), None)
     # fetchmany
     curs.execute('select null')
     self.assertEqual(curs.fetchmany(), [(None,)])
     self.assertEqual(curs.fetchmany(), [])
     curs.execute('select null')
     self.assertEqual(curs.fetchmany(2), [(None,)])
     self.assertEqual(curs.fetchmany(2), [])
     # fetchall
     curs.execute('select null')
     self.assertEqual(curs.fetchall(), [(None,)])
     self.assertEqual(curs.fetchall(), [])
     # multiple rows
     curs.execute('create table x ( y text )')
     curs.execute('insert into x values (%s)', 'a')
     curs.execute('insert into x values (%s)', 'b')
     curs.execute('insert into x values (%s)', 'c')
     curs.execute('select * from x')
     self.assertEqual(curs.fetchall(), [('a',), ('b',), ('c',)])
     curs.execute('select * from x')
     self.assertEqual(curs.fetchmany(), [('a',)])
     self.assertEqual(curs.fetchmany(), [('b',)])
     self.assertEqual(curs.fetchmany(), [('c',)])
     self.assertEqual(curs.fetchmany(), [])
     curs.execute('select * from x')
     self.assertEqual(curs.fetchmany(2), [('a',), ('b',)])
     self.assertEqual(curs.fetchmany(2), [('c',)])
     self.assertEqual(curs.fetchmany(2), [])
     self.assertEqual(curs.arraysize, 1)
     curs.arraysize = 2
     self.assertEqual(curs.arraysize, 2)
     curs.execute('select * from x')
     self.assertEqual(curs.fetchmany(), [('a',), ('b',)])
     self.assertEqual(curs.fetchmany(), [('c',)])
     self.assertEqual(curs.fetchmany(), [])
     db.rollback()
     curs = db.cursor()
     # multiple rows and cols
     curs.execute('create table x ( y text, z int )')
     curs.executemany('insert into x values (%s, %s)', 
                 [('a', 1), ('b', 1), ('c', 1)])
     curs.execute('select * from x')
     self.assertEqual(curs.fetchall(), 
                 [('a', 1), ('b', 1), ('c', 1)])
     db.rollback()
     curs = db.cursor()
     curs.execute('create table x ( y text, z int )')
     curs.executemany('insert into x values (%(a)s, %(b)s)', 
                 [dict(a='a', b=1), dict(a='b', b=1), dict(a='c', b=1)])
     curs.execute('select * from x')
     self.assertEqual(curs.fetchall(), 
                 [('a', 1), ('b', 1), ('c', 1)])
     # close
     curs.close()
     self.assertRaises(ocpgdb.Error, curs.close)
     self.assertRaises(ocpgdb.Error, curs.execute, 'select null')
     self.assertRaises(ocpgdb.Error, curs.fetchone)
     self.assertRaises(ocpgdb.Error, curs.fetchmany)
     self.assertRaises(ocpgdb.Error, curs.fetchall)
示例#28
0
 def setUp(self):
     self.db = ocpgdb.connect(**self.connect_args)
示例#29
0
from time import time
"""
Compare performance of ocpgdb, pyPgSQL and psycopg2 for simple exec's
"""


def time_exec(db, cmd, *args):
    st = time()
    curs = db.cursor()
    try:
        for n in xrange(10000):
            curs.execute(cmd, args)
    finally:
        curs.close()
    return 1 / ((time() - st) / 10000)


import ocpgdb
from pyPgSQL import PgSQL
import psycopg2

print "no args"
print 'ocpgdb', time_exec(ocpgdb.connect(port=5433), 'select 1')
print 'pypgsql', time_exec(PgSQL.connect(port=5433), 'select 1')
print 'psycopg', time_exec(psycopg2.connect(port=5433), 'select 1')

print "one arg"
print 'ocpgdb', time_exec(ocpgdb.connect(port=5433), 'select %s', 1)
print 'pypgsql', time_exec(PgSQL.connect(port=5433), 'select %s', 1)
print 'psycopg', time_exec(psycopg2.connect(port=5433), 'select %s', 1)
示例#30
0
 def runTest(self):
     db = ocpgdb.connect(**scratch_db)
     curs = db.cursor()
     # Make sure all the bits are there
     self.assertHasAttr(curs, 'description')
     self.assertHasAttr(curs, 'rowcount')
     #self.assertHasAttr(curs, 'callproc') # Optional
     self.assertHasAttr(curs, 'close')
     self.assertHasAttr(curs, 'execute')
     self.assertHasAttr(curs, 'executemany')
     self.assertHasAttr(curs, 'fetchone')
     self.assertHasAttr(curs, 'fetchmany')
     self.assertHasAttr(curs, 'fetchall')
     #self.assertHasAttr(curs, 'nextset') # Optional
     self.assertHasAttr(curs, 'arraysize')
     self.assertHasAttr(curs, 'setinputsizes') # Stub
     self.assertHasAttr(curs, 'setoutputsize') # Stub
     # Now test functionality
     self.assertRaises(ocpgdb.Error, curs.fetchone)
     self.assertEqual(curs.description, None)
     self.assertEqual(curs.rowcount, -1)
     # description
     curs.execute('select null')
     self.assertEqual(curs.description, 
         [('?column?', ocpgdb.pgoid.unknown, None, None, None, None, None)])
     self.assertEqual(curs.rowcount, -1)
     # execute
     curs.execute('select null')
     self.assertEqual(curs.fetchall(), [(None,)])
     curs.execute('select null', ())
     self.assertEqual(curs.fetchall(), [(None,)])
     curs.execute('select null', [])
     self.assertEqual(curs.fetchall(), [(None,)])
     curs.execute('select null', {})
     self.assertEqual(curs.fetchall(), [(None,)])
     curs.execute('select null, 1')
     self.assertEqual(curs.fetchall(), [(None, 1)])
     curs.execute('select %s::int, %s::int', (None, 1))
     self.assertEqual(curs.fetchall(), [(None, 1)])
     curs.execute('select %(a)s::int, %(b)s::int', dict(a=None, b=1))
     self.assertEqual(curs.fetchall(), [(None, 1)])
     self.assertRaises(ocpgdb.Error, curs.execute, 
                       'select %s::int, %s::int')
     db.rollback()
     self.assertRaises(ocpgdb.Error, curs.execute, 
                       'select %s::int, %s::int', None)
     db.rollback()
     self.assertRaises(TypeError, curs.execute, 
                       'select %s::int, %s::int', None, 1)
     db.rollback()
     self.assertRaises(ocpgdb.Error, curs.execute, 
                       'select %s::int, %s::int', (None, None, None))
     db.rollback()
     self.assertRaises(ocpgdb.Error, curs.execute, 
                       'select %s::int, %s::int', dict(a=None, b=1))
     db.rollback()
     self.assertRaises(ocpgdb.Error, curs.execute, 
                       'select %(a)s::int, %(b)s::int', (None, 1))
     db.rollback()
     curs.execute('create table x ( y text )')
     self.assertEqual(curs.rowcount, None)
     self.assertRaises(ocpgdb.Error, curs.fetchall)
     db.rollback()
     # executemany
     pass
     # fetchone
     curs.execute('select null')
     self.assertEqual(curs.fetchone(), (None,))
     self.assertEqual(curs.fetchone(), None)
     # fetchmany
     curs.execute('select null')
     self.assertEqual(curs.fetchmany(), [(None,)])
     self.assertEqual(curs.fetchmany(), [])
     curs.execute('select null')
     self.assertEqual(curs.fetchmany(2), [(None,)])
     self.assertEqual(curs.fetchmany(2), [])
     # fetchall
     curs.execute('select null')
     self.assertEqual(curs.fetchall(), [(None,)])
     self.assertEqual(curs.fetchall(), [])
     # multiple rows
     curs.execute('create table x ( y text )')
     curs.execute('insert into x values (%s)', 'a')
     curs.execute('insert into x values (%s)', 'b')
     curs.execute('insert into x values (%s)', 'c')
     curs.execute('select * from x')
     self.assertEqual(curs.fetchall(), [('a',), ('b',), ('c',)])
     curs.execute('select * from x')
     self.assertEqual(curs.fetchmany(), [('a',)])
     self.assertEqual(curs.fetchmany(), [('b',)])
     self.assertEqual(curs.fetchmany(), [('c',)])
     self.assertEqual(curs.fetchmany(), [])
     curs.execute('select * from x')
     self.assertEqual(curs.fetchmany(2), [('a',), ('b',)])
     self.assertEqual(curs.fetchmany(2), [('c',)])
     self.assertEqual(curs.fetchmany(2), [])
     self.assertEqual(curs.arraysize, 1)
     curs.arraysize = 2
     self.assertEqual(curs.arraysize, 2)
     curs.execute('select * from x')
     self.assertEqual(curs.fetchmany(), [('a',), ('b',)])
     self.assertEqual(curs.fetchmany(), [('c',)])
     self.assertEqual(curs.fetchmany(), [])
     db.rollback()
     curs = db.cursor()
     # multiple rows and cols
     curs.execute('create table x ( y text, z int )')
     curs.executemany('insert into x values (%s, %s)', 
                 [('a', 1), ('b', 1), ('c', 1)])
     curs.execute('select * from x')
     self.assertEqual(curs.fetchall(), 
                 [('a', 1), ('b', 1), ('c', 1)])
     db.rollback()
     curs = db.cursor()
     curs.execute('create table x ( y text, z int )')
     curs.executemany('insert into x values (%(a)s, %(b)s)', 
                 [dict(a='a', b=1), dict(a='b', b=1), dict(a='c', b=1)])
     curs.execute('select * from x')
     self.assertEqual(curs.fetchall(), 
                 [('a', 1), ('b', 1), ('c', 1)])
     # close
     curs.close()
     self.assertRaises(ocpgdb.Error, curs.close)
     self.assertRaises(ocpgdb.Error, curs.execute, 'select null')
     self.assertRaises(ocpgdb.Error, curs.fetchone)
     self.assertRaises(ocpgdb.Error, curs.fetchmany)
     self.assertRaises(ocpgdb.Error, curs.fetchall)
示例#31
0
 def setUp(self):
     self.db = ocpgdb.connect(**self.connect_args)
示例#32
0
"""
Simple framework for profiling py components of ocpgdb
"""
import hotshot
import hotshot.stats
import ocpgdb

db = ocpgdb.connect(port=5433)

def init():
    curs = db.cursor()
    try:
        curs.execute('drop table iorate')
    except ocpgdb.DatabaseError:
        db.rollback()
    curs.execute('create table iorate (a int, b int, c int, d int)')
    curs.close()

def foo():
    curs = db.cursor()
    for i in xrange(10000):
        curs.execute('insert into iorate values (%s, %s, %s, %s)', 
                     (1000,1000,1000,1000))
    curs.close()
    db.rollback()

init()
if 0:
    foo()
else:
    prof = hotshot.Profile("scratch/ocpgdb.prof", 1, 1)
示例#33
0
"""
Simple framework for profiling py components of ocpgdb
"""
import hotshot
import hotshot.stats
import ocpgdb

db = ocpgdb.connect(port=5433)


def init():
    curs = db.cursor()
    try:
        curs.execute('drop table iorate')
    except ocpgdb.DatabaseError:
        db.rollback()
    curs.execute('create table iorate (a int, b int, c int, d int)')
    curs.close()


def foo():
    curs = db.cursor()
    for i in xrange(10000):
        curs.execute('insert into iorate values (%s, %s, %s, %s)',
                     (1000, 1000, 1000, 1000))
    curs.close()
    db.rollback()


init()
if 0:
示例#34
0
    for word in words:
        for s in shift:
            d = word / s % 10
            if digits or d:
                digits.append(d)
    return tuple(digits)

def decode(db, value):
    data = list(ocpgdb.PgConnection.execute(db, "select '%s'::numeric" % value, ()))[0][0].value
    words = struct.unpack('!%dh' % (len(data) / 2), data)
    ndigits, weight, sign, dscale = words[:4]
    words = words[4:]
    print "ndigits %d, weight %d, sign %d, dscale %d" % (ndigits, weight, sign, dscale)
    print words
    assert ndigits == len(words)
    if words:
        digits = unpack_digits(words)
        if sign == 16384:
            sign = 1
        cull = (4 - dscale) % 4
        exp = (weight + 1 - ndigits) * 4 + cull
        if cull:
            digits = digits[:-cull]
    else:
        exp = -dscale
        digits = (0,) * dscale
    print digits, exp
    return decimal.Decimal((sign, digits, exp))

db=ocpgdb.connect(database="andrewm",port=5433,use_mx_datetime=1)
示例#35
0
from time import time

"""
Compare performance of ocpgdb, pyPgSQL and psycopg2 for simple exec's
"""

def time_exec(db, cmd, *args):
    st = time()
    curs = db.cursor()
    try:
        for n in xrange(10000):
            curs.execute(cmd, args)
    finally:
        curs.close()
    return 1 / ((time() - st) / 10000)

import ocpgdb
from pyPgSQL import PgSQL
import psycopg2

print "no args"
print 'ocpgdb', time_exec(ocpgdb.connect(port=5433), 'select 1')
print 'pypgsql', time_exec(PgSQL.connect(port=5433), 'select 1')
print 'psycopg', time_exec(psycopg2.connect(port=5433), 'select 1')

print "one arg"
print 'ocpgdb', time_exec(ocpgdb.connect(port=5433), 'select %s', 1)
print 'pypgsql', time_exec(PgSQL.connect(port=5433), 'select %s', 1)
print 'psycopg', time_exec(psycopg2.connect(port=5433), 'select %s', 1)