docs: def find_column(self, search, data_type=None):
          """
          Aggresively search through your database's schema for a column.
  
          Parameters
          -----------
          search: str
             glob pattern for what you're looking for
          data_type: str, list
             (optional) specify which data type(s) you want to return
  
          Examples
          ----------
          >>> from db import DemoDB
          >>> db = DemoDB()
          >>> len(db.find_column("Name").columns)
          5
          >>> len(db.find_column("*Id").columns)
          20
          >>> len(db.find_column("*Address*").columns)
          3
          >>> len(db.find_column("*Address*", data_type="NVARCHAR(70)").columns)
          3
          >>> len(db.find_column("*e*", data_type=["NVARCHAR(70)", "INTEGER"]).columns)
          17
  
          -= Should sort in some way for all those doctests to be viable...
          -= if not, there's always a random issue where rows are not in the same order, making doctest fail.
          db.find_column("Name") # returns all columns named "Name"
          +-----------+-------------+---------------+
          | Table     | Column Name | Type          |
          +-----------+-------------+---------------+
          | Artist    |     Name    | NVARCHAR(120) |
          | Genre     |     Name    | NVARCHAR(120) |
          | MediaType |     Name    | NVARCHAR(120) |
          | Playlist  |     Name    | NVARCHAR(120) |
          | Track     |     Name    | NVARCHAR(200) |
          +-----------+-------------+---------------+
          db.find_column("*Id") # returns all columns ending w/ Id
          +---------------+---------------+---------+
          | Table         |  Column Name  | Type    |
          +---------------+---------------+---------+
          | Album         |    AlbumId    | INTEGER |
          | Album         |    ArtistId   | INTEGER |
          | Artist        |    ArtistId   | INTEGER |
          | Customer      |  SupportRepId | INTEGER |
          | Customer      |   CustomerId  | INTEGER |
          | Employee      |   EmployeeId  | INTEGER |
          | Genre         |    GenreId    | INTEGER |
          | Invoice       |   InvoiceId   | INTEGER |
          | Invoice       |   CustomerId  | INTEGER |
          | InvoiceLine   |    TrackId    | INTEGER |
          | InvoiceLine   | InvoiceLineId | INTEGER |
          | InvoiceLine   |   InvoiceId   | INTEGER |
          | MediaType     |  MediaTypeId  | INTEGER |
          | Playlist      |   PlaylistId  | INTEGER |
          | PlaylistTrack |    TrackId    | INTEGER |
          | PlaylistTrack |   PlaylistId  | INTEGER |
          | Track         |    TrackId    | INTEGER |
          | Track         |    AlbumId    | INTEGER |
          | Track         |  MediaTypeId  | INTEGER |
          | Track         |    GenreId    | INTEGER |
          +---------------+---------------+---------+
          db.find_column("*Address*") # returns all columns containing Address
          +----------+----------------+--------------+
          | Table    |  Column Name   | Type         |
          +----------+----------------+--------------+
          | Customer |    Address     | NVARCHAR(70) |
          | Employee |    Address     | NVARCHAR(70) |
          | Invoice  | BillingAddress | NVARCHAR(70) |
          +----------+----------------+--------------+
          db.find_column("*Address*", data_type="NVARCHAR(70)") # returns all columns containing Address that are varchars
          +----------+----------------+--------------+
          | Table    |  Column Name   | Type         |
          +----------+----------------+--------------+
          | Customer |    Address     | NVARCHAR(70) |
          | Employee |    Address     | NVARCHAR(70) |
          | Invoice  | BillingAddress | NVARCHAR(70) |
          +----------+----------------+--------------+
          db.find_column("*e*", data_type=["NVARCHAR(70)", "INTEGER"]) # returns all columns have an "e" and are NVARCHAR(70)S or INTEGERS
          +-------------+----------------+--------------+
          | Table       |  Column Name   | Type         |
          +-------------+----------------+--------------+
          | Customer    |    Address     | NVARCHAR(70) |
          | Customer    |  SupportRepId  | INTEGER      |
          | Customer    |   CustomerId   | INTEGER      |
          | Employee    |   ReportsTo    | INTEGER      |
          | Employee    |   EmployeeId   | INTEGER      |
          | Employee    |    Address     | NVARCHAR(70) |
          | Genre       |    GenreId     | INTEGER      |
          | Invoice     |   InvoiceId    | INTEGER      |
          | Invoice     |   CustomerId   | INTEGER      |
          | Invoice     | BillingAddress | NVARCHAR(70) |
          | InvoiceLine | InvoiceLineId  | INTEGER      |
          | InvoiceLine |   InvoiceId    | INTEGER      |
          | MediaType   |  MediaTypeId   | INTEGER      |
          | Track       |  MediaTypeId   | INTEGER      |
          | Track       |  Milliseconds  | INTEGER      |
          | Track       |    GenreId     | INTEGER      |
          | Track       |     Bytes      | INTEGER      |
          +-------------+----------------+--------------+
          """
          if isinstance(data_type, str):
              data_type = [data_type]
          cols = []
          for table in self.tables:
              for col in vars(table):
                  if glob.fnmatch.fnmatch(col, search):
                      if data_type and isinstance(getattr(table, col), Column) and getattr(table, col).type not in data_type:
                          continue
                      if isinstance(getattr(table, col), Column):
                          cols.append(getattr(table, col))
          return ColumnSet(cols)