示例#1
0
    def test_errors(self):
        global dbfarm
        monetdblite.shutdown()

        if PY26:
            return

        # select before init
        with self.assertRaises(monetdblite.DatabaseError):
            monetdblite.sql('select * from tables')

        # init with weird argument
        with self.assertRaises(Exception):
            monetdblite.init(33)

        # init in unwritable directory
        with self.assertRaises(monetdblite.DatabaseError):
            monetdblite.init('/unwritabledir')

        # proper init
        monetdblite.init(dbfarm)

        # select from non-existent table
        with self.assertRaises(monetdblite.DatabaseError):
            monetdblite.sql('select * from nonexistenttable')

        # invalid connection object
        with self.assertRaises(monetdblite.DatabaseError):
            monetdblite.sql('select * from tables', client=33)

        # invalid colnames
        with self.assertRaises(monetdblite.DatabaseError):
            monetdblite.create('pylite08', {33: []})

        # empty colnames
        with self.assertRaises(monetdblite.DatabaseError):
            monetdblite.create('pylite08', {'': []})

        # dictionary with invalid keys
        d = dict()
        d[33] = 44
        with self.assertRaises(monetdblite.DatabaseError):
            monetdblite.create('pylite08', d)

        monetdblite.sql('DROP TABLE pylite08')
        monetdblite.create('pylite08', dict(a=[], b=[], c=[]))

        # FIXME: segfault
        # missing dict key in insert
        #with self.assertRaises(monetdblite.DatabaseError):
        #   monetdblite.insert('pylite08', dict(a=33,b=44))

        # too few columns in insert
        try:
            import pandas
            with self.assertRaises(monetdblite.DatabaseError):
                monetdblite.insert('pylite08', [[33], [44]])
        except:
            return
    def test_sql_types(self, initialize_monetdblite):
        monetdblite.sql('CREATE TABLE pylite04_decimal(d DECIMAL(18,3))')
        monetdblite.insert('pylite04_decimal', {'d': numpy.arange(100000)})
        result = monetdblite.sql('SELECT * FROM pylite04_decimal')
        assert result['d'][0] == 0, "Incorrect result"

        monetdblite.sql('CREATE TABLE pylite04_date(d DATE)')
        monetdblite.sql("INSERT INTO pylite04_date VALUES ('2000-01-01')")
        result = monetdblite.sql('SELECT d FROM pylite04_date')
        assert result['d'][0] == '2000-01-01', "Incorrect result"
 def test_many_sql_statements(self, initialize_monetdblite):
     for i in range(5):  # FIXME 1000
         conn = monetdblite.connectclient()
         monetdblite.sql('START TRANSACTION', client=conn)
         monetdblite.sql('CREATE TABLE pylite11 (i INTEGER)', client=conn)
         monetdblite.insert('pylite11', {'i': numpy.arange(10)},
                            client=conn)
         result = monetdblite.sql('SELECT * FROM pylite11', client=conn)
         assert result['i'][0] == 0, "Invalid result"
         monetdblite.sql('DROP TABLE pylite11', client=conn)
         monetdblite.sql('ROLLBACK', client=conn)
         del conn
示例#4
0
 def test_monetdblite_insert(self):
     monetdblite.create('pylite02', {'i': numpy.arange(100000)})
     try:
         import pandas
         monetdblite.insert('pylite02', numpy.arange(100000))
         result = monetdblite.sql('select * from pylite02')
         self.assertEquals(len(result['i']), 200000, "Incorrect result")
     except:
         #no pandas
         result = monetdblite.sql('select * from pylite02')
         self.assertEquals(len(result['i']), 100000, "Incorrect result")
         return
示例#5
0
 def test_many_sql_statements(self):
     for i in range(5):  # FIXME 1000
         conn = monetdblite.connectclient()
         monetdblite.sql('START TRANSACTION', client=conn)
         monetdblite.sql('CREATE TABLE pylite09 (i INTEGER)', client=conn)
         monetdblite.insert('pylite09', {'i': numpy.arange(10)},
                            client=conn)
         result = monetdblite.sql('SELECT * FROM pylite09', client=conn)
         self.assertEquals(result['i'][0], 0, "Invalid result")
         monetdblite.sql('DROP TABLE pylite09', client=conn)
         monetdblite.sql('ROLLBACK', client=conn)
         del conn
 def test_monetdblite_insert(self, initialize_monetdblite):
     monetdblite.create('pylite02', {'i': numpy.arange(100000)})
     monetdblite.insert('pylite02', numpy.arange(100000))
     result = monetdblite.sql('select * from pylite02')
     assert len(result['i']) == 200000, "Incorrect result"
 def test_null_string_insertion_bug(self, initialize_monetdblite):
     monetdblite.sql("CREATE TABLE pylite12 (s varchar(2))")
     monetdblite.insert('pylite12', {'s': ['a', None]})
     result = monetdblite.sql("SELECT * FROM pylite12")
     expected = numpy.ma.masked_array(['a', 'a'], mask=[0, 1])
     numpy.testing.assert_array_equal(result['s'], expected)
 def test_bad_column_number(self, initialize_monetdblite):
     # too few columns in insert
     monetdblite.create('pylite10', dict(a=[], b=[], c=[]))
     with pytest.raises(monetdblite.DatabaseError):
         monetdblite.insert('pylite10', [[33], [44]])
 def test_missing_dict_key(self, initialize_monetdblite):
     # FIXME: segfault
     # missing dict key in insert
     monetdblite.create('pylite09', dict(a=[], b=[], c=[]))
     with pytest.raises(monetdblite.DatabaseError):
         monetdblite.insert('pylite09', dict(a=33, b=44))