2015-12-15 30 views
7

dự án bình của tôi sử dụng sqlalchemy_utils trong một số định nghĩa mô hình của nó, gây ra lỗi di chuyển như:Làm thế nào để autoimport mô-đun trong việc di chuyển bình-Di chuyển

NameError: global name 'sqlalchemy_utils' is not defined 

do gói này không được nhập khẩu trong các tập tin chuyển đổi.

Tôi muốn tự động tạo bình chứa/di chuyển tự động các dòng nhập gói này vào các tệp di chuyển, làm cách nào để đạt được điều này?

Tôi đã xem alembic.ini và di chuyển/env.py - nhưng không rõ ràng đối với tôi cách thức phù hợp là gì nếu có thể.

Trả lời

9

Cách đơn giản nhất là sửa đổi mẫu để bao gồm việc nhập đó.

script.py.mako:

... 
from alembic import op 
import sqlalchemy as sa 
import sqlalchemy_utils 
${imports if imports else ''} 
... 

Nếu bạn có nhiều mô-đun cung cấp các loại tùy chỉnh, bạn có thể sử dụng chiến lược described in the docs. Tạo một mô-đun trong dự án của bạn để nhập các mô-đun khác nhau, sau đó đặt đó làm tiền tố mà Alembic sẽ sử dụng cho các loại người dùng.

/myapp/migration_types.py:

from sqlalchemy_utils import * 
from myapp.custom_model_type import MyType 

script.py.mako:

... 
from myapp import migration_types 
... 

env.py:

... 
def run_migrations_online(): 
    ... 
    context.configure(
     ... 
     user_module_prefix='migration_types.', 
     ... 
    ) 
... 
+0

Ngoài ra còn phải là một cách để sửa đổi biến 'imports' chuyển cho template, nhưng tôi không thể tìm thấy nó vào lúc này. – davidism

Các vấn đề liên quan