Колба SQLAlchemy импорт БД импорт - PullRequest
1 голос
/ 08 мая 2019

Я использую колбу с SQLAlchemy, после установки всех параметров конфигурации я получил ошибку импорта БД на модель.

ImportError: невозможно импортировать имя 'db'

мое основное приложение __ init __

from flask_api import FlaskAPI
from flask_sqlalchemy import SQLAlchemy
import os
import json
from flask import Flask
from flask_pymongo import PyMongo
from flask import request

from app.test.controllers import test


def create_app(config_name):
    app = FlaskAPI(__name__)
    CORS(app)
    app.config.from_object(os.environ['APP_SETTINGS'])
    db = SQLAlchemy(app)
    from app.test.controllers import test
    app.register_blueprint(test)

мой контроллер и модель в app / test / test.py и model.py

test.py

from flask import Blueprint, request, redirect, url_for
import json
from flask_sqlalchemy import SQLAlchemy

from app.test.model import TestModel

test = Blueprint('test', __name__, url_prefix='/api/v1')


@test.route('/test/store', methods=['POST'])
def store():
    return json.dumps({'success':True}), 200, {'ContentType':'application/json'}

my model.py

from app import db

class TestModel(db.Model):
    __tablename__ = 'user_profiles'
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(255), unique=False)
    email= db.Column(db.String(255), unique=False)


    def __init__(self, name=None, email=None):
        self.name = name
        self.email = email

    def __repr__(self):
        return '<User %r>' % (self.name, self.email)

1 Ответ

0 голосов
/ 08 мая 2019

Вы используете фабричный метод Flask, поэтому инициализируйте SqlAlchemy в своей модели и импортируйте его в свой файл __init__.py

Итак, model.py становится

from flask_sqlalchemy import SQLAlchemy    
db = SQLAlchemy()

class TestModel(db.Model):
    __tablename__ = 'user_profiles'
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(255), unique=False)
    email= db.Column(db.String(255), unique=False)


    def __init__(self, name=None, email=None):
        self.name = name
        self.email = email

    def __repr__(self):
        return '<User %r>' % (self.name, self.email)

Тогда в __init__.py это становится

from flask_api import FlaskAPI
from model import db
import os
import json
from flask import Flask
from flask_pymongo import PyMongo
from flask import request

from app.test.controllers import test


def create_app(config_name):
    app = FlaskAPI(__name__)
    CORS(app)
    app.config.from_object(os.environ['APP_SETTINGS'])
    db.init_app(app)
    from app.test.controllers import test
    app.register_blueprint(test)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...