Anforderung eine einfache erledigter Arbeit Beispiel für die Automatische Generierung von Migrationen
Ich installiert alembic 0.3.4, sqlalchemy, SQLite version 3.7.4 und aktualisiert SQLAlchemy 0.6.4 zu SQLAlchemy 0,7 oder größer von meinem ubuntu.
Ich folgte die Anweisung: http://alembic.readthedocs.org/en/latest/tutorial.html
Bin ich nun testen: Automatische Generierung von Migrationen
Ich habe ein Paket: schemas, und ein Paket-marker unter schemas: init.py
mit einer Zeile definiert:
__all__ = ["teacher"]
Ich habe auch ein Modul der Datei: dbmodel.py in Schemata-Verzeichnis unter content
Base = declarative_base()
class teacher(Base):
__tablename__ = 'teacher'
id = Column(Integer, primary_key=True)
name = Column(String)
department = Column(String)
Übrigens, ich habe eine sqlite db erstellt, und es läuft gut für das tun einige Tests, bevor die Automatische Generierung von Migrationen. Ich konfigurierte die env.py Datei. Es gibt zwei Zeilen Hinzugefügt:
from schemas.dbmodel import Base
target_metadata = Base.metadata
Dann habe ich ausgeführt:
alembic revision --autogenerate -m "Added teacher table"
aber bekomme immer noch Fehlermeldung:
Traceback (most recent call last):
File "/usr/local/bin/alembic", line 9, in <module>
load_entry_point('alembic==0.3.4', 'console_scripts', 'alembic')()
File "/usr/local/lib/python2.7/dist-packages/alembic-0.3.4-py2.7.egg/alembic/config.py", line 229, in main
**dict((k, getattr(options, k)) for k in kwarg)
File "/usr/local/lib/python2.7/dist-packages/alembic-0.3.4-py2.7.egg/alembic/command.py", line 93, in revision
script.run_env()
File "/usr/local/lib/python2.7/dist-packages/alembic-0.3.4-py2.7.egg/alembic/script.py", line 188, in run_env
util.load_python_file(self.dir, 'env.py')
File "/usr/local/lib/python2.7/dist-packages/alembic-0.3.4-py2.7.egg/alembic/util.py", line 185, in load_python_file
module = imp.load_source(module_id, path, open(path, 'rb'))
File "alembic/env.py", line 20, in <module>
from schemas.dbmodel import Base
ImportError: No module named schemas.dbmodel
Ich weiß nicht, warum es so schwierig für mich zu testen, ein einfaches Beispiel mit alembic. Ich möchte nur der import meiner Anwendung Daten-Modell in den physischen Datenbank-Modell. Ist das so kompliziert? Danke. Bitte jemand, der weiß, alembic gibt uns eine einfache stehen im Beispiel Schritt für Schritt durch. Ich denke mehr Leute werden davon profitieren.
- Also wo in deinem code ist die url zu der sqlite-Datenbank? Ich habe diese arbeiten von einem bestehenden Pyramide Anwendung, die Verwendung von sqlalchemy-Migrationen. Um um dieses zu erhalten, Arbeit, die ich hatte, um die bootstrap-url/db-Verbindung als Pyramide hat und dann zu laden, bis mein Modell Base von dort. github.com/mitechie/Bookie/blob/develop/dbversions/env.py#L12
- In Datei: alembic.ini, ich habe es konfiguriert und Hinzugefügt eine Linie: sqlalchemy.url =sqlite:///test funktionierte Dies für die Migration von schema-änderung an meiner test-DB.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Fand ich auch, dass Alembic konnte nicht finden, dass meine Modell-Module. Als workaround habe ich gefunden, dass, indem Sie die folgende, um meine
env.py
vor dem importieren meiner Modelle, ich könnte es erzwingen, um zu arbeiten:Dies ist wahrscheinlich nicht die beste Lösung, aber es bekam Alembic auf autogenerate meine Migrationen.
import os import sys sys.path.append(os.getcwd()) from configuration import app, db