I'm looking for an easy python way to compare column types from SQLAlchemy to base types. For example, if my column type is a VARCHAR of any length, I want to read it as a string.
I can read the column type okay, but I'm not sure an easy way to verify it's basic type... it would be nice if I could use something like "if isinstance(mycolumn, int)" - but I'm new to python and not sure how this would work.
Here's what I have so far:
from sqlalchemy import MetaData
from sqlalchemy import create_engine, Column, Table
engine = create_engine('mysql+mysqldb://user:pass@localhost:3306/mydb', pool_recycle=3600)
meta = MetaData()
meta.bind = engine
datatable = meta.tables['my_data_table']
[c.type for c in datatable.columns]
[INTEGER(display_width=11), DATE(), VARCHAR(length=127), DOUBLE(precision=None, scale=None, asdecimal=True)]
One solution is to do the conversion manually - for example, this works:
def convert(self, saType): type = "Unknown" if isinstance(saType,sqlalchemy.types.INTEGER): type = "Integer" elif isinstance(saType,sqlalchemy.types.VARCHAR): type = "String" elif isinstance(saType,sqlalchemy.types.DATE): type = "Date" elif isinstance(saType,sqlalchemy.dialects.mysql.base._FloatType): type = "Double" return type
Not sure if this is a normal python way of doing things... I still think like a java programmer.