Не совсем то, что нужно, но немного более короткий вариант, который использует только внутри информации:
from sqlalchemy import create_engine
engine = create_engine('sqlite:///:memory:', echo=True)
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy import Column, Integer, String, Date, Text
Base = declarative_base()
class Note(Base):
__tablename__ = 'notes'
slug = Column('short_title', String, primary_key=True)
date = Column('day', Date, primary_key=True)
contents = Column(Text, nullable=True)
if __name__ == '__main__':
print [(i.name, i.primary_key) for i in Note.__table__.columns]
Это дает нам следующий результат:
[('short_title', True), ('day', True), ('contents', False)]