def test_xfield_types(self): cursor = self.connection.cursor() fieldinfo = mariadb.fieldinfo() cursor.execute( "CREATE TEMPORARY TABLE test_xfield_types (a tinyint not null auto_increment primary " "key, b smallint, c int, d bigint, e float, f decimal, g double, h char(10), i varchar(255), j blob, k json, index(b))"); info = cursor.description self.assertEqual(info, None) cursor.execute("SELECT * FROM test_xfield_types") info = cursor.description self.assertEqual(fieldinfo.type(info[0]), "TINY") self.assertEqual(fieldinfo.type(info[1]), "SHORT") self.assertEqual(fieldinfo.type(info[2]), "LONG") self.assertEqual(fieldinfo.type(info[3]), "LONGLONG") self.assertEqual(fieldinfo.type(info[4]), "FLOAT") self.assertEqual(fieldinfo.type(info[5]), "NEWDECIMAL") self.assertEqual(fieldinfo.type(info[6]), "DOUBLE") self.assertEqual(fieldinfo.type(info[7]), "STRING") self.assertEqual(fieldinfo.type(info[8]), "VAR_STRING") self.assertEqual(fieldinfo.type(info[9]), "BLOB") if self.connection.server_version_info > (10, 5, 1) or is_mysql(): self.assertEqual(fieldinfo.type(info[10]), "JSON") else: self.assertEqual(fieldinfo.type(info[10]), "BLOB") self.assertEqual(fieldinfo.flag(info[0]), "NOT_NULL | PRIMARY_KEY | AUTO_INCREMENT | NUMERIC") self.assertEqual(fieldinfo.flag(info[1]), "PART_KEY | NUMERIC") self.assertEqual(fieldinfo.flag(info[9]), "BLOB | BINARY") del cursor
def get_field_info(self, cur): """Retrieves the field info associated with a cursor""" field_info = mariadb.fieldinfo() field_info_text = [] # Retrieve Column Information for column in cur.description: column_name = column[0] #column_type = field_info.type(column) #column_flags = field_info.flag(column) #field_info_text.append(f"{column_name}: {column_type} {column_flags}") field_info_text.append(column_name) return field_info_text