Reverse Engineer SQLAlchemy deklarative Klassendefinition aus der vorhandenen MySQL Datenbank?

Ich habe eine bereits vorhandene MySQL-Datenbank mit rund 50 Tabellen.

Anstatt Hand Code eine deklarative Stil SqlAlchemy Klasse ( wie hier gezeigt ) für jede Tabelle, gibt es ein Tool / Skript / Befehl Ich kann gegen die MySQL-Datenbank, die eine Python-Klasse in der deklarativen Stil für jede Tabelle in der Datenbank zu generieren laufen?

  • SQLAlchemy + pymysql Fehler: sqlalchemy.util.queue.Empty
  • SQLAlchemy DELETE Fehler, der durch eine beiläufige Last und eine dynamische Version der gleichen Beziehung verursacht wird
  • Wie kann ich bedingte Klauseln mit der Ausdruckssprache von SQLAlchemy schreiben?
  • SQLAlchemie AUF DUPLICATE KEY UPDATE
  • Howto erstellen db mysql mit sqlalchemy
  • Sqlalchemy: Reihenfolge der Abfrage Ergebnis unerwartet
  • Um nur einen Tisch als Beispiel zu nehmen (würde für alle 50 ideal generieren) wie folgt:

    +---------+--------------------+ | 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 | +---------+--------------------+ 

    Gibt es ein Tool / Skript / Befehl, der eine Textdatei erzeugen kann, die so etwas wie:

     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) 

  • 'Is' -Operator verhält sich unerwartet mit Schwimmern
  • Warum ist sys.maxint <(sys.maxint - 100 + 0.01) in Python?
  • Python - Anzahl der Ziffern im Exponenten
  • Python ValueError: ungültiges Literal für int () mit base 10:
  • Gleitkomma-Einschränkungen
  • Falsche Antwort in SPOJ `CUBERT`
  • 4 Solutions collect form web for “Reverse Engineer SQLAlchemy deklarative Klassendefinition aus der vorhandenen MySQL Datenbank?”

    Verwenden sqlautocode :

    Es ist ein flexibles Werkzeug, um ein Modell aus einer vorhandenen Datenbank zu autogenisieren.

    Dies ist ein etwas anderer Ansatz für SqlSoup , mit dem Sie Tabellen verwenden können, ohne sie explizit zu definieren. Auf der anderen Seite wird sqlalutocode tatsächlichen Python-Code generieren.

    Denken Sie daran, deklarative kann mit reflektierten Tabellen verwendet werden. Also, wenn Startzeit war nicht ein großes Problem, das Sie dies tun könnten:

     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) 

    Anders als dieser Autocode ist wohl der Weg zu gehen.

    Jetzt (im Jahr 2015) möchten Sie wahrscheinlich https://pypi.python.org/pypi/sqlacodegen stattdessen verwenden!

    SqlSoup kann eine introspektive Zuordnung eines vorhandenen SQL-Schemas durchführen.

    Python ist die beste Programmiersprache der Welt.