5

Flask、postgresql、およびリーフレットを使用して小さな webapp を作成することにしました。postgresql 用のPostGISエクステンダーを使用して座標 (緯度と経度) を保存したかったのです。私のフラスコ アプリケーションは、データベース移行プロセスに Flask-SQLAlchemy、ブループリント、特に Flask-Migrate を使用しています。

以下は、私のデータベース モデルの抜粋です。

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))

ここに私の app/ 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

特定のエクステンダーを使用する前は、モデルを適応させる問題はありませんでした。それ以来、移行は問題なく行われていますが、アップグレードは機能しません (python manage.py db upgrade)。

ここでは、Web サーバーから取得したログを示します。

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

私は少し迷っており、この特定のテーマについてあまり助けが見つかりませんでした. この問題の原因について何か考えはありますか?

4

2 に答える 2

7

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

自動生成されたスクリプトは、実行する前に常に確認する必要があります。スクリプトにはそう言っているコメントさえあります。

于 2016-08-29T21:14:03.250 に答える