属性错误:__enter__

Posted

技术标签:

【中文标题】属性错误:__enter__【英文标题】:AttributeError: __enter__ 【发布时间】:2019-03-31 22:06:41 【问题描述】:

我使用 sqlalchemy 在 python 中定义了一个表,但是当我尝试创建它时出现此错误

import os

from flask import Flask, render_template, request
from models import *

app = Flask(__name__)
app.config["SQLALCHEMY_DATABASE_URI"] = os.getenv("DATABASE_URL")
app.config["SQLALCHEMY_TRACK_MODIFICATIONS"] = False
db.init_app(app)

def main():
    db.create_all()

if __name__ == "__main__":
    with app.app_context().push:
        main()

错误:

Traceback(最近一次调用最后一次):文件“create.py”,第 15 行,在 with app.app_context().push(): AttributeError: __ enter __

【问题讨论】:

错误图片与代码图片不匹配。准确地发布您尝试运行的代码(不是图像)、准确地用于运行它的命令以及准确地作为错误返回的文本。 再补充一下,图片中的错误不是标题中指出的错误 请阅读why you should not upload images of code on SO when asking a question 对不起,我现在正在编辑帖子 您是否尝试使用 db = SQLAlchemy() 然后 db.init_app(app) 进行 db 初始化? 【参考方案1】:
import os
from flask import Flask, render_template, request
from models import *

app = Flask(__name__)
app.config["SQLALCHEMY_DATABASE_URI"] = os.getenv("DATABASE_URL")
app.config["SQLALCHEMY_TRACK_MODIFICATIONS"] = False
db.init_app(app)

def main():
    with app.app_context():
       db.create_all()

if __name__ == "__main__":
    main()

这样,它应该可以工作。

【讨论】:

以上是关于属性错误:__enter__的主要内容,如果未能解决你的问题,请参考以下文章

Python多处理错误:AttributeError:模块'__main__'没有属性'__spec__'

Django 错误:“布尔”对象没有属性“__getitem__”

错误“NoneType”对象没有属性“__dict__”

python面向对象( item系列,__enter__ 和__exit__,__call__方法,元类)

Python_面向对象

动态创建的方法和装饰器,得到错误 'functools.partial' 对象没有属性 '__module__'