Python 属性错误:';非类型';对象没有属性'_实例化插件';

Python 属性错误:';非类型';对象没有属性'_实例化插件';,python,flask,sqlalchemy,Python,Flask,Sqlalchemy,我正在尝试开始使用Flask和PostgreSQL创建一个简单的项目。为了完整起见,我将包括所有终端命令以及我的代码。在我的SQL_示例文件夹和本地PostgreSQL数据库“讲师3”中使用表“flights”: 现在我继续使用以下代码: import os from flask import Flask, render_template, request from sqlalchemy import create_engine from sqlalchemy.orm import scope

我正在尝试开始使用Flask和PostgreSQL创建一个简单的项目。为了完整起见,我将包括所有终端命令以及我的代码。在我的SQL_示例文件夹和本地PostgreSQL数据库“讲师3”中使用表“flights”:

现在我继续使用以下代码:

import os

from flask import Flask, render_template, request
from sqlalchemy import create_engine
from sqlalchemy.orm import scoped_session, sessionmaker

app = Flask(__name__)

engine = create_engine(os.getenv("DATABASE_URL"))
db = scoped_session(sessionmaker(bind=engine))

@app.route("/")
def index():
    flights = db.execute("SELECT * FROM flights").fetchall()
    return render_template("index.html", flights=flights)

@app.route("/book", methods=["POST"])
def book():
    name = request.form.get("name")
    try:
        flight_id = int(request.form.get("flight_id"))
    except ValueError:
        return render_template("error.html", message="Invalid flight number.")

    if db.execute("SELECT * FROM flights WHERE id = :id", {"id": flight_id}).rowcount == 0:
        return render_template("error.html", message="No such flight with that id.")
    db.execute("INSERT INTO passengers (name, flight_id) VALUES (:name, :flight_id)", {"name": name, "flight_id": flight_id})
    db.commit()
    return render_template("success.html")
执行以下命令:

$ export FLASK_APP="application.py"
$ flask run
遇到以下错误:

Traceback (most recent call last):
  File "/Users/spencermiller/Desktop/SQL_Example/venv/bin/flask", line 11, in <module>
    sys.exit(main())
  File "/Users/spencermiller/Desktop/SQL_Example/venv/lib/python3.7/site-packages/flask/cli.py", line 967, in main
    cli.main(args=sys.argv[1:], prog_name="python -m flask" if as_module else None)
  File "/Users/spencermiller/Desktop/SQL_Example/venv/lib/python3.7/site-packages/flask/cli.py", line 586, in main
    return super(FlaskGroup, self).main(*args, **kwargs)
  File "/Users/spencermiller/Desktop/SQL_Example/venv/lib/python3.7/site-packages/click/core.py", line 782, in main
    rv = self.invoke(ctx)
  File "/Users/spencermiller/Desktop/SQL_Example/venv/lib/python3.7/site-packages/click/core.py", line 1259, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
  File "/Users/spencermiller/Desktop/SQL_Example/venv/lib/python3.7/site-packages/click/core.py", line 1066, in invoke
    return ctx.invoke(self.callback, **ctx.params)
  File "/Users/spencermiller/Desktop/SQL_Example/venv/lib/python3.7/site-packages/click/core.py", line 610, in invoke
    return callback(*args, **kwargs)
  File "/Users/spencermiller/Desktop/SQL_Example/venv/lib/python3.7/site-packages/click/decorators.py", line 73, in new_func
    return ctx.invoke(f, obj, *args, **kwargs)
  File "/Users/spencermiller/Desktop/SQL_Example/venv/lib/python3.7/site-packages/click/core.py", line 610, in invoke
    return callback(*args, **kwargs)
  File "/Users/spencermiller/Desktop/SQL_Example/venv/lib/python3.7/site-packages/flask/cli.py", line 848, in run_command
    app = DispatchingApp(info.load_app, use_eager_loading=eager_loading)
  File "/Users/spencermiller/Desktop/SQL_Example/venv/lib/python3.7/site-packages/flask/cli.py", line 305, in __init__
    self._load_unlocked()
  File "/Users/spencermiller/Desktop/SQL_Example/venv/lib/python3.7/site-packages/flask/cli.py", line 330, in _load_unlocked
    self._app = rv = self.loader()
  File "/Users/spencermiller/Desktop/SQL_Example/venv/lib/python3.7/site-packages/flask/cli.py", line 388, in load_app
    app = locate_app(self, import_name, name)
  File "/Users/spencermiller/Desktop/SQL_Example/venv/lib/python3.7/site-packages/flask/cli.py", line 240, in locate_app
    __import__(module_name)
  File "/Users/spencermiller/Desktop/SQL_Example/application.py", line 9, in <module>
    engine = create_engine(os.getenv("DATABASE_URL"))
  File "/Users/spencermiller/Desktop/SQL_Example/venv/lib/python3.7/site-packages/sqlalchemy/engine/__init__.py", line 479, in create_engine
    return strategy.create(*args, **kwargs)
  File "/Users/spencermiller/Desktop/SQL_Example/venv/lib/python3.7/site-packages/sqlalchemy/engine/strategies.py", line 56, in create
    plugins = u._instantiate_plugins(kwargs)
AttributeError: 'NoneType' object has no attribute '_instantiate_plugins'
AttributeError: 'NoneType' object has no attribute '_instantiate_plugins'

在这段代码中,您正试图使用环境变量上的数据库URL创建flask的引擎

engine = create_engine(os.getenv("DATABASE_URL"))
我猜您没有设置这个环境变量,所以您试图创建一个带有
None
url的引擎

您需要设置env变量,或者将数据库的URL硬编码到python中

db_url = 'postgresql+psycopg2://{user}:{password}@{url}/{db}'
engine = create_engine(db_url)

希望能有所帮助。

在这段代码中,您试图使用环境变量上的数据库URL创建flask的引擎

engine = create_engine(os.getenv("DATABASE_URL"))
我猜您没有设置这个环境变量,所以您试图创建一个带有
None
url的引擎

您需要设置env变量,或者将数据库的URL硬编码到python中

db_url = 'postgresql+psycopg2://{user}:{password}@{url}/{db}'
engine = create_engine(db_url)

希望有帮助。

如果仍然出现以下错误,请按照其他答案操作:

Traceback (most recent call last):
  File "/Users/spencermiller/Desktop/SQL_Example/venv/bin/flask", line 11, in <module>
    sys.exit(main())
  File "/Users/spencermiller/Desktop/SQL_Example/venv/lib/python3.7/site-packages/flask/cli.py", line 967, in main
    cli.main(args=sys.argv[1:], prog_name="python -m flask" if as_module else None)
  File "/Users/spencermiller/Desktop/SQL_Example/venv/lib/python3.7/site-packages/flask/cli.py", line 586, in main
    return super(FlaskGroup, self).main(*args, **kwargs)
  File "/Users/spencermiller/Desktop/SQL_Example/venv/lib/python3.7/site-packages/click/core.py", line 782, in main
    rv = self.invoke(ctx)
  File "/Users/spencermiller/Desktop/SQL_Example/venv/lib/python3.7/site-packages/click/core.py", line 1259, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
  File "/Users/spencermiller/Desktop/SQL_Example/venv/lib/python3.7/site-packages/click/core.py", line 1066, in invoke
    return ctx.invoke(self.callback, **ctx.params)
  File "/Users/spencermiller/Desktop/SQL_Example/venv/lib/python3.7/site-packages/click/core.py", line 610, in invoke
    return callback(*args, **kwargs)
  File "/Users/spencermiller/Desktop/SQL_Example/venv/lib/python3.7/site-packages/click/decorators.py", line 73, in new_func
    return ctx.invoke(f, obj, *args, **kwargs)
  File "/Users/spencermiller/Desktop/SQL_Example/venv/lib/python3.7/site-packages/click/core.py", line 610, in invoke
    return callback(*args, **kwargs)
  File "/Users/spencermiller/Desktop/SQL_Example/venv/lib/python3.7/site-packages/flask/cli.py", line 848, in run_command
    app = DispatchingApp(info.load_app, use_eager_loading=eager_loading)
  File "/Users/spencermiller/Desktop/SQL_Example/venv/lib/python3.7/site-packages/flask/cli.py", line 305, in __init__
    self._load_unlocked()
  File "/Users/spencermiller/Desktop/SQL_Example/venv/lib/python3.7/site-packages/flask/cli.py", line 330, in _load_unlocked
    self._app = rv = self.loader()
  File "/Users/spencermiller/Desktop/SQL_Example/venv/lib/python3.7/site-packages/flask/cli.py", line 388, in load_app
    app = locate_app(self, import_name, name)
  File "/Users/spencermiller/Desktop/SQL_Example/venv/lib/python3.7/site-packages/flask/cli.py", line 240, in locate_app
    __import__(module_name)
  File "/Users/spencermiller/Desktop/SQL_Example/application.py", line 9, in <module>
    engine = create_engine(os.getenv("DATABASE_URL"))
  File "/Users/spencermiller/Desktop/SQL_Example/venv/lib/python3.7/site-packages/sqlalchemy/engine/__init__.py", line 479, in create_engine
    return strategy.create(*args, **kwargs)
  File "/Users/spencermiller/Desktop/SQL_Example/venv/lib/python3.7/site-packages/sqlalchemy/engine/strategies.py", line 56, in create
    plugins = u._instantiate_plugins(kwargs)
AttributeError: 'NoneType' object has no attribute '_instantiate_plugins'
AttributeError: 'NoneType' object has no attribute '_instantiate_plugins'
do(第5行)

而不是

engine = create_engine(os.getenv("DATABASE_URL"))

如果仍然出现以下错误,请遵循其他答案:

Traceback (most recent call last):
  File "/Users/spencermiller/Desktop/SQL_Example/venv/bin/flask", line 11, in <module>
    sys.exit(main())
  File "/Users/spencermiller/Desktop/SQL_Example/venv/lib/python3.7/site-packages/flask/cli.py", line 967, in main
    cli.main(args=sys.argv[1:], prog_name="python -m flask" if as_module else None)
  File "/Users/spencermiller/Desktop/SQL_Example/venv/lib/python3.7/site-packages/flask/cli.py", line 586, in main
    return super(FlaskGroup, self).main(*args, **kwargs)
  File "/Users/spencermiller/Desktop/SQL_Example/venv/lib/python3.7/site-packages/click/core.py", line 782, in main
    rv = self.invoke(ctx)
  File "/Users/spencermiller/Desktop/SQL_Example/venv/lib/python3.7/site-packages/click/core.py", line 1259, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
  File "/Users/spencermiller/Desktop/SQL_Example/venv/lib/python3.7/site-packages/click/core.py", line 1066, in invoke
    return ctx.invoke(self.callback, **ctx.params)
  File "/Users/spencermiller/Desktop/SQL_Example/venv/lib/python3.7/site-packages/click/core.py", line 610, in invoke
    return callback(*args, **kwargs)
  File "/Users/spencermiller/Desktop/SQL_Example/venv/lib/python3.7/site-packages/click/decorators.py", line 73, in new_func
    return ctx.invoke(f, obj, *args, **kwargs)
  File "/Users/spencermiller/Desktop/SQL_Example/venv/lib/python3.7/site-packages/click/core.py", line 610, in invoke
    return callback(*args, **kwargs)
  File "/Users/spencermiller/Desktop/SQL_Example/venv/lib/python3.7/site-packages/flask/cli.py", line 848, in run_command
    app = DispatchingApp(info.load_app, use_eager_loading=eager_loading)
  File "/Users/spencermiller/Desktop/SQL_Example/venv/lib/python3.7/site-packages/flask/cli.py", line 305, in __init__
    self._load_unlocked()
  File "/Users/spencermiller/Desktop/SQL_Example/venv/lib/python3.7/site-packages/flask/cli.py", line 330, in _load_unlocked
    self._app = rv = self.loader()
  File "/Users/spencermiller/Desktop/SQL_Example/venv/lib/python3.7/site-packages/flask/cli.py", line 388, in load_app
    app = locate_app(self, import_name, name)
  File "/Users/spencermiller/Desktop/SQL_Example/venv/lib/python3.7/site-packages/flask/cli.py", line 240, in locate_app
    __import__(module_name)
  File "/Users/spencermiller/Desktop/SQL_Example/application.py", line 9, in <module>
    engine = create_engine(os.getenv("DATABASE_URL"))
  File "/Users/spencermiller/Desktop/SQL_Example/venv/lib/python3.7/site-packages/sqlalchemy/engine/__init__.py", line 479, in create_engine
    return strategy.create(*args, **kwargs)
  File "/Users/spencermiller/Desktop/SQL_Example/venv/lib/python3.7/site-packages/sqlalchemy/engine/strategies.py", line 56, in create
    plugins = u._instantiate_plugins(kwargs)
AttributeError: 'NoneType' object has no attribute '_instantiate_plugins'
AttributeError: 'NoneType' object has no attribute '_instantiate_plugins'
do(第5行)

而不是

engine = create_engine(os.getenv("DATABASE_URL"))

你能发布env var“DATABASE_URL”吗?@NivardoAlbuquerque谢谢你的回复,我不是100%确定你的意思,但我运行了printenv命令并将结果添加到了上面的帖子对不起,我是说“os.getenv(“DATABASE_URL”)”。你能帮我打印吗?@NivardoAlbuquerque我得到:-bash:当我在终端中运行该代码时,意外标记“DATABASE\u URL”附近出现语法错误,这是否意味着这就是导致错误的原因?你没有设置环境变量
DATABASE\u URL
,所以
os.getenv()
返回
None
:你能发布env var“DATABASE_URL”吗?@NivardoAlbuquerque谢谢你的回复,我不是100%确定你的意思,但我运行了printenv命令并将结果添加到上面的帖子对不起,我的意思是“os.getenv(“DATABASE_URL”)”。你能帮我打印吗?@NivardoAlbuquerque我得到:-bash:当我在终端中运行该代码时,意外标记“DATABASE\u URL”附近出现语法错误,这是否意味着这就是导致错误的原因?你没有设置环境变量
DATABASE\u URL
,因此
os.getenv()
返回
:谢谢你的帮助,我相信我已经正确地设置了环境变量,但是我仍然遇到相同的“AttributeError:“NoType”对象没有属性“\u instantiate\u plugins””错误添加
print(os.getenv(“DATABASE\u URL”))
engine=create\u engine(os.getenv(“DATABASE\u URL”)
之前,因此,我应该添加print(db\u url),然后感谢您的帮助,我相信我已经正确设置了环境变量,但是我仍然遇到相同的“AttributeError:'NoneType'对象没有属性'\u instantiate\u plugins'”错误add
print(os.getenv(“DATABASE\u url”)
before
engine=create\u engine(os.getenv(“DATABASE\u url”))
。我已经对数据库URL进行了硬编码,所以我应该添加打印(db\u URL)