scoped_session对象没有属性'create_all'

时间:2015-06-12 19:57:19

标签: python flask sqlalchemy flask-sqlalchemy

我有以下使用Flask-SQLAlchemy设置数据库的代码。我得到一个异常“AttributeError: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:pass@dburl:/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

非常感谢任何指导!

1 个答案:

答案 0 :(得分:3)

这是connection.create_all(),您在中间添加了session

与当前问题无关,还有其他一些看起来不正确的事情。

  • 运行create_all后,您无需提交。
  • 扩展实例通常名为dbDB类不执行任何操作,只需单独编写create_all函数。
  • 在大多数情况下,您不需要为Flask-SQLAlchemy模型指定表名或列名,通常不使用大写名称。
  • 不要使用标签,PEP 8建议使用4个空格。