Flask SQLAlchemy:TypeError:"Flask"对象不可迭代



我正在尝试创建一个Flask应用程序,用户可以在其中注册/登录并拥有自己的页面(遵循YT教程(-我对此很陌生,很难理解我收到的错误消息。

错误消息:

Traceback (most recent call last):
File "C:UsersmmacpPycharmProjectscfg_projectmain.py", line 11, in <module>
app = create_app()
File "C:UsersmmacpPycharmProjectscfg_projectwebsite__init__.py", line 25, in create_app
create_database(app)
File "C:UsersmmacpPycharmProjectscfg_projectwebsite__init__.py", line 32, in create_database
db.create_all(app)
File "C:UsersmmacpAppDataLocalProgramsPythonPython310libsite-packagesflask_sqlalchemyextension.py", line 868, in create_all
self._call_for_binds(bind_key, "create_all")
File "C:UsersmmacpAppDataLocalProgramsPythonPython310libsite-packagesflask_sqlalchemyextension.py", line 837, in _call_for_binds
for key in keys:
TypeError: 'Flask' object is not iterable

main.py:

from website import create_app
app = create_app()
if __name__ == '__main__':
app.run(debug=True)

init.py

from flask import Flask
from flask_sqlalchemy import SQLAlchemy
from os import path

db = SQLAlchemy()
DB_NAME = "database.db"

def create_app():
app = Flask(__name__)
app.config['SECRET_KEY'] = 'kdxhfds iefhsdbf'
app.config['SQLALCHEMY_DATABASE_URI'] = f'sqlite:///{DB_NAME}'
db.init_app(app)
from .views import views
from .auth import auth
app.register_blueprint(views, url_prefix='/')
app.register_blueprint(auth, url_prefix='/')
from .models import User, Posts
create_database(app)
return app

def create_database(app):
if not path.exists('website/' + DB_NAME):
db.create_all(app)
print('Created Database!')

型号.py

from website import db
from flask_login import UserMixin
from sqlalchemy.sql import func
class Posts(db.Model):
id = db.Column(db.Integer, primary_key=True)
data = db.Column(db.String(500))
date = db.Column(db.DateTime(timezone=True), default=func.now)
user_id = db.Column(db.Integer, db.ForeignKey('user.id')) # refs the User table

class User(db.Model, UserMixin):
id = db.Column(db.Integer, primary_key=True)
email = db.Column(db.String(150), unique=True)
username = db.Column(db.String(150), unique=True)
password = db.Column(db.String(150))
first_name = db.Column(db.String(150))
surname = db.Column(db.String(150))
fav_team = db.Column(db.String(150))
notes = db.relationship('posts')

我试着重新格式化数据库的User和Posts类,并尝试了一些小的调整,但这些都没有帮助——目前我对下一步应该做什么有点不知所措。

通常我最终能弄清楚这些事情,但我的脑袋有点炸了!!

我通过向init.py文件中的create_app((函数添加一段代码解决了这个问题:

def create_app():
app = Flask(__name__)
app.config['SECRET_KEY'] = 'kdxhfds iefhsdbf'
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///databse.db'
db.init_app(app)
***with app.app_context():
db.create_all()***

最新更新