Reverse Engineering SQLAlchemy deklarative Klassendefinition aus vorhandenen MySQL-Datenbank?
-
07-07-2019 - |
Frage
Ich habe eine bereits bestehende MySQL-Datenbank mit rund 50 Tabellen.
Anstatt Hand-Code eine deklarative Stil sqlalchemy Klasse (
Lösung Es ist ein flexibles Werkzeug, ein Modell aus einer bestehenden Datenbank automatisch zu generieren. Dies ist eine etwas andere Herangehensweise an SqlSoup , die Sie Tabellen verwenden können, ohne explizit definieren sie. Auf der anderen Seite wird sqlalutocode tatsächlichen Python-Code generieren.
Andere Tipps
Jetzt (im Jahr 2015), die Sie wahrscheinlich verwenden möchten https://pypi.python.org/pypi / sqlacodegen statt!
Beachten Sie deklarative kann mit reflektiertem Tabellen verwendet werden. Also, wenn die Startzeit kein großes Problem sind Sie könnten dies tun:
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 das Autocode ist wahrscheinlich der Weg zu gehen.
SqlSoup kann introspektiv Abbildung eines vorhandenen SQL-Schema durchführen.