我有以下使用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
非常感谢任何指导!
答案 0 :(得分:3)
这是connection.create_all()
,您在中间添加了session
。
与当前问题无关,还有其他一些看起来不正确的事情。
create_all
后,您无需提交。db
。 DB
类不执行任何操作,只需单独编写create_all
函数。