A fundamental feature of SQL is that a query returns the same number of columns for each row, so there's no way not to return a column based on some per-row condition on the SQL side. SQLAlchemy just follows this logic.
If you want to exclude None values from the data returned by SQLAlchemy, you can do it in Python:
def no_nulls(row):
return [column for column in row if column is not None]
no_nulls(select([table]).execute().fetchone())
-> ('1', 'some value', 'some value')
If a column is NULL in some rows but not in others, this approach may return different number of elements for different rows.