Reverse Engineering SQLAlchemy deklarative definition der Klasse von vorhandenen MySQL-Datenbank?
Ich habe eine bestehende mysql-Datenbank mit rund 50 Tabellen.
Eher als hand-code eine deklarative style-SqlAlchemy-Klasse (wie hier gezeigt) für jede Tabelle gibt es ein tool/script/Befehl, den ich ausführen kann, gegen die mysql-Datenbank wird generieren eine python-Klasse, in der deklarative Stil für jede Tabelle in der Datenbank?
Nur eine Tabelle als Beispiel (erzeugen würde, für alle 50 im Idealfall) 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/script/Befehl zum erzeugen einer text-Datei mit 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)
- Dies ist ein gutes Beispiel dafür, warum sollten Sie es vermeiden, SQL-Generatoren :).
- ähm warum würde das sein ?
Du musst angemeldet sein, um einen Kommentar abzugeben.
verwenden sqlautocode:
Es ist ein flexibles Werkzeug zur automatischen Generierung eines Modells aus einer vorhandenen Datenbank.
Dies ist eine etwas andere Herangehensweise an SqlSoup, können Sie Tabellen verwenden, ohne Sie explizit zu definieren. Auf der anderen Seite, sqlalutocode generieren, die eigentlichen python-code.
hg
Installieren Sie es manuell installierenpsycopg2
und Sie sind gesetzt.Nun (in 2015) würde Sie wahrscheinlich verwenden wollen, https://pypi.python.org/pypi/sqlacodegen statt!
Beachten deklarative kann verwendet werden mit reflektiert Tabellen. Also, wenn die Startzeit nicht ein riesiges Problem, Sie könnten dies tun:
anderes, als dass autocode ist wahrscheinlich der Weg zu gehen.
SqlSoup durchführen können introspektiv-mapping für eine vorhandene SQL-schema.