def test_connections(self): # create two clients conn = monetdbe.connect(autocommit=True) conn2 = monetdbe.connect() # create a table within a transaction in one client monetdbe.sql('START TRANSACTION', client=conn) monetdbe.create('pylite05', {'i': numpy.arange(100000)}, client=conn) # check that table was successfully created result = monetdbe.sql('SELECT MIN(i) AS minimum FROM pylite05', client=conn) assert result['minimum'][0] == 0, "Incorrect result" # attempt to query the table from another client with pytest.raises(monetdbe.DatabaseError): monetdbe.sql('SELECT * FROM pylite05', client=conn2) # now commit the table monetdbe.sql('COMMIT', client=conn) # query the table again from the other client, this time it should be there result = monetdbe.sql('SELECT MIN(i) AS minimum FROM pylite05', client=conn2) assert result['minimum'][0] == 0, "Incorrect result"
def test_monetdbe_create_multiple_columns(self): arrays = numpy.arange(100000).reshape((5, 20000)) cur = monetdbe.create( 'pylite03', { 'i': arrays[0], 'j': arrays[1], 'k': arrays[2], 'l': arrays[3], 'm': arrays[4] }) result = cur.execute('select * from pylite03').fetchnumpy() assert len(result) == 5, "Incorrect amount of columns" assert len(result['i']) == 20000, "Incorrect amount of rows"
def test_empty_colnames(self): # empty colnames with pytest.raises(monetdbe.DatabaseError): monetdbe.create('pylite07', {'': []})
def test_invalid_colnames(self): # invalid colnames with pytest.raises(monetdbe.DatabaseError): monetdbe.create('pylite06', {33: []})
def test_monetdbe_insert(self): cur = monetdbe.create('pylite02', {'i': numpy.arange(1000)}) cur.insert('pylite02', {'i': numpy.arange(1000)}) result = cur.execute('select * from pylite02').fetchdf() assert len(result['i']) == 2000, "Incorrect result"
def test_monetdbe_create(self): cur = monetdbe.create('pylite01', {'i': numpy.arange(1000)}) result = monetdbe.sql('select * from pylite01', client=cur.connection) assert len(result['i']) == 1000, "Incorrect result"
def test_bad_column_number(self): # too few columns in insert cur = monetdbe.create('pylite10', dict(a=[], b=[], c=[])) with pytest.raises(monetdbe.DatabaseError): cur.insert('pylite10', {'a': [33], 'b': [44]})
def test_missing_dict_key(self): # missing dict key in insert cur = monetdbe.create('pylite09', dict(a=[], b=[], c=[])) with pytest.raises(monetdbe.DatabaseError): cur.insert('pylite09', dict(a=33, b=44))
def test_invalid_key_dict(self): # dictionary with invalid keys d = dict() d[33] = 44 with pytest.raises(monetdbe.ProgrammingError): monetdbe.create('pylite08', d)
def test_bad_column_number(self): # too few columns in insert monetdbe.create('pylite10', dict(a=[], b=[], c=[])) with pytest.raises(monetdbe.DatabaseError): monetdbe.insert('pylite10', [[33], [44]])
def test_missing_dict_key(self, ): # FIXME: segfault # missing dict key in insert monetdbe.create('pylite09', dict(a=[], b=[], c=[])) with pytest.raises(monetdbe.DatabaseError): monetdbe.insert('pylite09', dict(a=33, b=44))