Обратное определение декларативного класса SQLAlchemy из существующей базы данных MySQL?

У меня есть уже существующая база данных mysql, содержащая около 50 таблиц.

Вместо того, чтобы обрабатывать код класса декларации SqlAlchemy ( как показано здесь ) для каждой таблицы, есть ли команда / сценарий / команда, которую я могу выполнить против базы данных mysql, которая будет генерировать класс python в декларативном стиле для каждой таблицы в базе данных?

Чтобы взять только одну таблицу в качестве примера (создадим для всех 50 идеально) следующим образом:

+---------+--------------------+ | dept_no | dept_name | +---------+--------------------+ | d009 | Customer Service | | d005 | Development | | d002 | Finance | | d003 | Human Resources | | d001 | Marketing | | d004 | Production | | d006 | Quality Management | | d008 | Research | | d007 | Sales | +---------+--------------------+ 

Есть ли инструмент / сценарий / команда, которая может генерировать текстовый файл, содержащий что-то вроде:

 from sqlalchemy.ext.declarative import declarative_base Base = declarative_base() class Department(Base): __tablename__ = 'departments' dept_no = Column(String(5), primary_key=True) dept_name = Column(String(50)) def __init__(self, dept_no, dept_name): self.dept_no = dept_no self.dept_name = dept_name def __repr__(self): return "<Department('%s','%s')>" % (self.dept_no, self.dept_name) 

  • Как создать флеш-приложение вокруг уже существующей базы данных?
  • как использовать много-ко-многим в sqlalchemy
  • SqlAlchemy эквивалент строки соединения podbcc с использованием FreeTDS
  • Установка начального значения автоинкремента SQLAlchemy
  • Операция Redshift COPY не работает в SQLAlchemy
  • Несколько доменов и поддоменов в одном экземпляре Pyramid
  • встроенный в процессор SqlAlchemy итератор / генератор?
  • Связь SQLAlchemy «один-ко-многим» при наследовании одиночной таблицы - декларативная
  • 4 Solutions collect form web for “Обратное определение декларативного класса SQLAlchemy из существующей базы данных MySQL?”

    используйте sqlautocode :

    Это гибкий инструмент для автоматического создания модели из существующей базы данных.

    Это немного другой подход к SqlSoup , который позволяет использовать таблицы без явного определения их. С другой стороны, sqlalutocode будет генерировать действительный код python.

    Имейте в виду, что декларативный может использоваться с отраженными таблицами. Поэтому, если время запуска не было большой проблемой, вы могли бы сделать это:

     engine = create_engine('mysql://...') meta = MetaData() meta.reflect(bind=engine) for table in meta.tables.values(): print """ class %s(Base): __table__ = Table(%r, Base.metadata, autoload=True) """ % (table.name, table.name) 

    за исключением этого автокода, вероятно, путь.

    Теперь (в 2015 году) вы, вероятно, захотите использовать https://pypi.python.org/pypi/sqlacodegen вместо этого!

    SqlSoup может выполнять интроспективное сопоставление существующей схемы SQL.

    Python - лучший язык программирования в мире.