2015-06-12 7 views
0

У меня есть следующий код, который устанавливает мою базу данных с помощью Flask-SQLAlchemy. Я получаю исключение «AttributeError: объект scoped_session не имеет атрибута« create_all ». Может кто-нибудь объяснить мне, почему я получаю ошибку и как я могу это исправить? :)scoped_session объект не имеет атрибута 'create_all'

__init__.py:

from flask import Flask 

app = Flask(__name__) 
from app.db import DB 

database = DB() 
database.create_all() 

db/__init__.py:

from flask import session 
from flask.ext.sqlalchemy import SQLAlchemy 
from app import app 

app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql://user:[email protected]:/schema' 
connection = SQLAlchemy(app) 

from app.db.models import * 

class DB(): 
    def __init__(self): 
     pass 

    def create_all(self): 
     connection.session.create_all() 
     connection.session.commit() 
     print("done") 

models.py:

from app.db import connection as db 

class Test(db.Model): 
    __tablename__ = 'Test' 

    id = db.Column("ID", db.Integer, primary_key=True) 
    name = db.Column("Name", db.String(100), nullable=False) 

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

    def __repr__(self): 
     return '<Test: %s>' % self.name 

Любое руководство было бы весьма признателен!

ответ

3

Это connection.create_all(), вы добавили session посередине.


Unrelated к немедленным проблемам, есть и другие вещи, которые не выглядят хорошо.

  • Нельзя фиксировать после запуска create_all.
  • Экземпляр расширения обычно называется db. Класс DB ничего не делает, просто напишите функцию create_all самостоятельно.
  • В большинстве случаев вам не нужно указывать имена таблиц или столбцов для моделей Flask-SQLAlchemy, а имена верхнего регистра обычно не используются.
  • Не используйте вкладки, PEP 8 рекомендует 4 пробела.
Смежные вопросы