AttributeError:“NoneType”对象没有属性“_instantiate_plugins”(无法导入 create_engine)

Posted

技术标签:

【中文标题】AttributeError:“NoneType”对象没有属性“_instantiate_plugins”(无法导入 create_engine)【英文标题】:AttributeError: 'NoneType' object has no attribute '_instantiate_plugins' (Cannot import create_engine) 【发布时间】:2020-07-28 23:18:55 【问题描述】:
import os

from sqlalchemy import create_engine
from sqlalchemy.orm import scoped_session, sessionmaker

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

def main():
    flights = db.execute("SELECT origin, destination, duration FROM flights").fetchall()
    for flight in flights:
        print(f"flight.origin to flight.destination, flight.duration minutes.")

if __name__ == "__main__":
    main()

Traceback(最近一次调用最后一次): 文件“list.py”,第 6 行,在 engine=create_engine(os.getenv("DATABASE_URL")) 文件“C:\Users\Aakash\AppData\Local\Programs\Python\Python38-32\lib\site-packages\sqlalchemy\engine__init__.py”, 第 479 行,在 create_engine 返回 strategy.create(*args, **kwargs) 创建文件“C:\Users\Aakash\AppData\Local\Programs\Python\Python38-32\lib\site-packages\sqlalchemy\engine\strategies.py”,第 56 行 插件 = u._instantiate_plugins(kwargs) AttributeError: 'NoneType' 对象没有属性 '_instantiate_plugins'

如果将我的代码更改为:

The Problem and the traceback is in the picture.

【问题讨论】:

【参考方案1】:

只需将其用作网址 “postgresql://用户名:密码@主机:端口/数据库” 直接在您的create_engine("postgresql://username:password@host:port/database") 中传递这些值

我遇到了同样的问题,现在它消失了。这对我有用。唯一需要提及的是,在创建新用户和数据库并移动表之后,我完全遇到了一个不同的错误。错误是'

'' ModuleNotFoundError: No module named 'psycopg2' '''

并且解决方案正在运行:pip3 install psycopg2-binary

PS:网址详情附上你的详细资料。

【讨论】:

【参考方案2】:

看起来os.getenv("DATABASE_URL") 正在返回None。调用create_engine(None) 会给你这个错误。 DATABASE_URL 是否在您的环境变量中定义?

【讨论】:

【参考方案3】:

而不是

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

用你的网址输入这个:

   engine = create_engine("postgresql://scott:tiger@localhost/mydatabase")
   db = scoped_session(sessionmaker(bind=engine))

【讨论】:

【参考方案4】:

为避免在您的代码中输入您的 postgresql 连接(包括密码),请根据以下方式在您的终端中定义您的环境变量:

source ~/.bash_profile

或者你可以使用命令的简写形式:

. ~/.bash_profile

这会在当前 shell 中执行 .bash_profile 文件。

有关重新加载 .bash_profile 的其他建议可以在 cmets here 中找到。

【讨论】:

以上是关于AttributeError:“NoneType”对象没有属性“_instantiate_plugins”(无法导入 create_engine)的主要内容,如果未能解决你的问题,请参考以下文章

AttributeError:'NoneType'对象没有属性'upper'[关闭]

%Matplotlib - AttributeError: 'NoneType' 对象没有属性 'lower'

BeautifulSoup:AttributeError:“NoneType”对象没有属性“文本”

Elastic Beanstalk 部署错误:AttributeError :: 'NoneType' 对象没有属性 'split'

AttributeError:“NoneType”对象没有“当前”属性

每次我使用 pip 时都会出现“AttributeError:'NoneType'”