here is a couple more columns than you need, just so you can be clear on the query
sysobjects.name AS "TABLE_NAME",
syscolumns.name AS "COLUMN_NAME",
systypes.name AS "DATA_TYPE",
syscolumns.LENGTH AS "LENGTH"
syscolumns ON sysobjects.id = syscolumns.id
systypes ON syscolumns.xtype = systypes.xtype
(sysobjects.xtype = 'U') and
sysobjects.name = 'MyTableName'
ORDER BY sysobjects.name, syscolumns.colid
If you're in one of those predicaments where cls.__private attributes just aren't enough since they can easily be accessed through inst._cls__private, and you need something a little more secure, here's ...