def test_null_string_insertion_bug(self): con = monetdbe.connect() monetdbe.sql("CREATE TABLE pylite12 (s varchar(2))", client=con) monetdbe.insert('pylite12', {'s': ['a', None]}, client=con) result = monetdbe.sql("SELECT * FROM pylite12", client=con) expected = numpy.ma.masked_array(['a', 'a'], mask=[0, 1]) numpy.testing.assert_array_equal(result['s'], expected)
def test_many_sql_statements(self): for i in range(5): # FIXME 1000 conn = monetdbe.connect() cur = conn.execute('CREATE TABLE pylite11 (i INTEGER)') cur.insert('pylite11', {'i': numpy.arange(10).astype(numpy.int32)}) result = cur.execute('SELECT * FROM pylite11').fetchdf() assert result['i'][0] == 0, "Invalid result" monetdbe.sql('DROP TABLE pylite11', client=conn) monetdbe.sql('ROLLBACK', client=conn) del conn
def test_many_sql_statements(self): for i in range(5): # FIXME 1000 conn = monetdbe.connect() monetdbe.sql('START TRANSACTION', client=conn) monetdbe.sql('CREATE TABLE pylite11 (i INTEGER)', client=conn) monetdbe.insert('pylite11', {'i': numpy.arange(10)}, client=conn) result = monetdbe.sql('SELECT * FROM pylite11', client=conn) assert result['i'][0] == 0, "Invalid result" monetdbe.sql('DROP TABLE pylite11', client=conn) monetdbe.sql('ROLLBACK', client=conn) del conn
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 = monetdbe.sql('select * from pylite03', client=cur.connection) assert len(result) == 5, "Incorrect amount of columns" assert len(result['i']) == 20000, "Incorrect amount of rows"
def test_sql_types(self): con = monetdbe.connect() con.execute('CREATE TABLE pylite04_decimal(d DECIMAL(18,3))') monetdbe.insert('pylite04_decimal', {'d': numpy.arange(100000)}, client=con) result = monetdbe.sql('SELECT * FROM pylite04_decimal') assert result['d'][0] == 0, "Incorrect result" monetdbe.sql('CREATE TABLE pylite04_date(d DATE)') monetdbe.sql("INSERT INTO pylite04_date VALUES ('2000-01-01')") result = monetdbe.sql('SELECT d FROM pylite04_date') assert result['d'][0] == '2000-01-01', "Incorrect result"
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_invalid_connection_object(self): # invalid connection object with pytest.raises(TypeError): monetdbe.sql('select * from tables', client=33)
def test_non_existent_table(self, ): # select from non-existent table with pytest.raises(monetdbe.DatabaseError): monetdbe.sql('select * from nonexistenttable')
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_regular_selection(self): con = monetdbe.connect() monetdbe.sql('CREATE TABLE pylite00 (i INTEGER)', client=con) con.execute('INSERT INTO pylite00 VALUES (1), (2), (3), (4), (5)') result = con.execute('SELECT * FROM pylite00').fetchdf() assert len(result['i']) == 5, "Incorrect result"