Tôi đã cài đặt alembic 0.3.4, sqlalchemy, SQLite phiên bản 3.7.4 và nâng cấp SQLAlchemy 0.6.4 lên SQLAlchemy 0.7 hoặc cao hơn từ ubuntu của tôi. Tôi làm theo các hướng dẫn: http://alembic.readthedocs.org/en/latest/tutorial.htmlYêu cầu một ví dụ làm việc đơn giản cho Auto Migating Migrations
Bây giờ tôi đang thử nghiệm: Auto Tạo Migrations Tôi đã tạo ra một gói phần mềm: schemas, và một điểm đánh dấu gói dưới schemas: init py với một dòng định nghĩa:
__all__ = ["teacher"]
tôi cũng đã tạo ra một tập tin mô-đun: dbmodel.py trong schemas thư mục với nội dung dưới đây
Base = declarative_base()
class teacher(Base):
__tablename__ = 'teacher'
id = Column(Integer, primary_key=True)
name = Column(String)
department = Column(String)
Đến wa y, tôi có một sqlite db được tạo ra, và nó chạy tốt để làm một số kiểm tra trước khi Auto Generating Migrations. Tôi đã cấu hình tệp env.py. Có hai dòng thêm:
from schemas.dbmodel import Base
target_metadata = Base.metadata
Sau đó, tôi chạy:
alembic revision --autogenerate -m "Added teacher table"
nhưng vẫn nhận được lỗi:
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
Tôi không biết tại sao nó là rất khó khăn cho tôi để kiểm tra một ví dụ đơn giản sử dụng alembic. Tôi chỉ muốn nhập mô hình dữ liệu ứng dụng của mình vào mô hình cơ sở dữ liệu vật lý. Điều đó có phức tạp không? Cảm ơn. Xin vui lòng ai đó biết alembic cho chúng ta một bước exaple đơn giản bước. Tôi đoán nhiều người sẽ được hưởng lợi từ điều đó.
Vì vậy, trong mã của bạn là url vào cơ sở dữ liệu sqlite ở đâu? Tôi đã nhận được điều này để làm việc từ một ứng dụng kim tự tháp hiện có đang sử dụng sqlalchemy-migrations. Để có được điều này để làm việc tôi đã phải bootstrap kết nối url/db như kim tự tháp hiện và sau đó để tải lên mô hình cơ sở của tôi từ đó. https://github.com/mitechie/Bookie/blob/develop/dbversions/env.py#L12 – Rick
Trong tệp: alembic.ini, tôi đã định cấu hình nó và thêm một dòng: sqlalchemy.url = sqlite: /// test This đã làm việc để di chuyển thay đổi giản đồ sang DB thử nghiệm của tôi. – user1342336