SQLALCHEMY_DATABASE_URI'不在 app.config 和属性错误中:'SQLAlchemy'对象没有属性'config'



我正在创建一个与烧瓶扩展flask_user集成的烧瓶应用程序。

然而,当我尝试运行应用程序时,我不断收到以下错误:

"SQLALCHEMY_DATABASE_URI"不在app.config中,并且AttributeError:"SQLAlchemy"对象没有属性"config">

这是我的代码:

app.py

from flask import Flask,render_template
from modules.database import create_db
from config import config
from flask_user import login_required, current_user,UserMixin
app = Flask(__name__)
config_name='development'
app.config.from_object(config[config_name])
db,User,Stripe,Plans,Usage,Tasks=create_db(app)
@app.route('/')
def home():
return 'Hello'
if __name__ == '__main__':
app.run()

config.py

class Config:
USER_APP_NAME='App Test'
USER_AFTER_REGISTER_ENDPOINT='plans'
class Dev_Config(Config):
ENV='development'
DEBUG=True
SQLALCHEMY_DATABASE_URI='sqlite:///dev_db.db'
CSRF_ENABLED=True
SECRET_KEY = '2345frtjislkmnqwers'
class Prod_Config(Config):
DEBUG=False

config={'development': Dev_Config,
'production': Prod_Config}

数据库.py

def create_db(app):
db = SQLAlchemy(app)
class User(db.Model, UserMixin):
id=db.Column(db.Integer,primary_key=True)
password = db.Column(db.String(255),nullable=False, server_default='')
email = db.Column(db.String(255),nullable=False,unique=True)
confirmed_at = db.Column(db.DateTime())
plan_id=db.Column(db.Integer, db.ForeignKey('plans.id'),default=1)
active=db.Column(db.Boolean(),nullable=False, server_default='0')
...

class Tasks(db.Model):
id=db.Column(db.Integer,primary_key=True)
task=db.Column(db.String(50),nullable=False,unique=True)
credits=db.Column(db.Integer,nullable=False)
db.create_all()
db_adapter=SQLAlchemy(db,User)
user_manager=UserManager(db_adapter,app)

return (db,User,Stripe,Plans,Usage,Tasks)

当我运行flask时,数据库已成功创建,但会显示错误消息。

我不明白为什么它在app.config中没有返回错误"SQLALCHEMY_DATABASE_URI",因为很明显,在config.py中,SQLALCHEY_DATABASE_URI已经配置好了。并且在那里。

此外,错误消息"SQLAlchemy"对象没有属性"config"是什么意思?为什么会发生这种事?

有人能帮忙吗?非常感谢。

我知道这不是你遇到的问题(我相信你得到的回复解决了你的问题(,但我遇到了同样的错误,但问题不同。

这个问题最终是数据库模型继承中的一个简单错误,然而这个错误让我走错了方向,当我弄清楚的时候有点尴尬!给我错误的片段:

class Layout(db):
...

其中db是SQLAchemy(app)。这显然是不对的,因为它应该继承自db.Model。固定:

class Layout(db.Model):
...

我不知道你为什么会出现这个错误,但我也做了类似的事情,并且成功了。在我的代码中,我没有创建名为config.py和database.py的不同文件,而是将其用作app.config,将数据库用作db。试着用我的方式做,看看这是否有效

app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = "sqlite:///My_Project_Database.db"
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
db = SQLAlchemy(app)

class user_database(db.Model):
sno=db.Column(db.Integer,primary_key=True)
class inventory_database(db.Model):
sno=db.Column(db.Integer,primary_key=True)
class suppliers_database(db.Model):
sno=db.Column(db.Integer,primary_key=True)
db.create_all()

最新更新