scoped_session 对象没有属性 'create_all'
scoped_session object has no attribute 'create_all'
我有以下代码使用 Flask-SQLAlchemy 设置我的数据库。我遇到异常 "AttributeError: scoped_session object has no attribute '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
任何指导将不胜感激!
是connection.create_all()
,你在中间加了session
。
与眼前的问题无关,还有其他看起来不对的地方。
- 您不需要在 运行
create_all
之后提交。
- 扩展实例通常命名为
db
。 DB
class 什么都不做,只需自己编写 create_all
函数即可。
- Flask-SQLAlchemy模型大多数情况下不需要指定table或列名,一般不使用大写名称。
- 不要使用制表符,PEP 8 建议使用 4 个空格。
我有以下代码使用 Flask-SQLAlchemy 设置我的数据库。我遇到异常 "AttributeError: scoped_session object has no attribute '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
任何指导将不胜感激!
是connection.create_all()
,你在中间加了session
。
与眼前的问题无关,还有其他看起来不对的地方。
- 您不需要在 运行
create_all
之后提交。 - 扩展实例通常命名为
db
。DB
class 什么都不做,只需自己编写create_all
函数即可。 - Flask-SQLAlchemy模型大多数情况下不需要指定table或列名,一般不使用大写名称。
- 不要使用制表符,PEP 8 建议使用 4 个空格。