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?

  • SQLAlchemie WHERE IN Einzelwert (Roh-SQL)
  • Wie bekomme ich die Anzahl der mit SQL Alchemy betroffenen Zeilen?
  • Löschen eines Objekts aus der Sammlung in SQLAlchemy
  • Sqlalchemy: Reihenfolge der Abfrage Ergebnis unerwartet
  • Hat diese Thread-lokale Flask-SQLAchemy-Session einen "MySQL Server ist weg" Fehler?
  • SQLAlchemy-Sitzung und Verbindungsbeziehung
  • 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) 

  • Es ist möglich, `` a <b und nicht (a - b <0) `` mit floats zu haben
  • Wie kann man überprüfen, ob eine Benutzereingabe ein Float ist
  • Warum ist der Gleitkommawert von 4 * 0,1 in Python 3 schön, aber 3 * 0,1 nicht?
  • 'Is' -Operator verhält sich unerwartet mit Schwimmern
  • Ausgewählte wissenschaftliche Zahl aus String extrahieren
  • TypeError: ein float ist erforderlich
  • 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.