2016-08-29 3 views
0

Flask、postgresql、およびリーフレットを使用して小さなwebappを作成することに決めました。私はPostGIS extender for postgresqlを使って座標(緯度と経度)を保存したかったのです。フラスコのアプリケーションでは、Flask-SQLAlchemy、青写真、特にFlask-Migrateを使用してデータベース移行プロセスを行います。ここで GeoAlchemy2のためのAlembicマイグレーションNameError:名前 'geoalchemy2'が定義されていません

は私のデータベースモデルの抜粋です。ここ

from . import db 
from geoalchemy2 import Geometry 


class Station(db.Model): 
    __tablename__ = 'stations' 

    id = db.Column(db.Integer, primary_key=True, unique=True) 
    name = db.Column(db.String(255)) 
    position = db.Column(Geometry('Point', srid=4326)) 

私のアプリの抜粋/ のinitの.py

import os 
from flask import Flask 
from flask_sqlalchemy import SQLAlchemy 
from flask_migrate import Migrate 
from config import config 

db = SQLAlchemy() 
migrate = Migrate() 

def create_app(config_name=None, main=True): 

if config_name is None: 
    config_name = os.environ.get('FLASK_CONFIG', 'development') 

app = Flask(__name__) 
app.config.from_object(config[config_name]) 

db.init_app(app) 
migrate.init_app(app, db) 

from .home import home as home_blueprint 
app.register_blueprint(home_blueprint) 

from .admin import admin as admin_blueprint 
app.register_blueprint(admin_blueprint, url_prefix='/admin') 

return app 

特定のエクステンダを使用しようとする前に、私は」didnの私のモデルに適応するのに問題はありません。それ以来、移行は正常ですが、アップグレードは機能しません(python manage.py db upgrade)。ここで

私はウェブサーバから取得したログ:

sa.Column('position', geoalchemy2.types.Geometry(geometry_type='POINT', srid=4326), nullable=True), 
`enter code here`NameError: name 'geoalchemy2' is not defined 

私は少し失われたと私は、この特定のテーマに関する多くの助けを見つけることができませんでした。この問題の原因は何ですか?

答えて

1

Alembicは、移行スクリプトでカスタムタイプのすべてのインポートを決定してレンダリングしようとしません。生成されたスクリプトを編集してfrom geoalchemy2.types import Geometryを追加し、列のdefをGeometryに変更します。

実行する前に、自動生成されたスクリプトを必ず確認してください。スクリプトにもこう言っているコメントがあります。

関連する問題